{"version":3,"sources":["shared/enum/SeverityEnum.ts","shared/utils/FileUtils.ts","shared/constants.ts","shared/services/APIService.ts","admin/services/AdminDecisionTreeService.ts","form/services/FormService.ts","admin/components/AdminDecisionTrees.tsx","admin/services/AdminFormService.ts","admin/components/AdminForm.tsx","admin/services/AdminRequirementsService.ts","admin/components/AdminRequirements.tsx","admin/services/AdminScriptsService.ts","admin/components/AdminScripts.tsx","admin/models/Script.ts","admin/dto/ScriptDTO.ts","admin/components/AdminEditorJs.tsx","admin/services/AdminHTMLService.ts","admin/components/AdminHTML.tsx","admin/dto/HtmlDTO.ts","admin/components/AdminEditorHtml.tsx","admin/services/AdminSubmissionsService.ts","admin/components/AdminSubmissions.tsx","admin/services/AdminTranslationService.ts","admin/components/AdminTranslations.tsx","admin/services/AdminImageService.ts","admin/components/AdminImages.tsx","admin/services/AdminGraphService.ts","admin/components/AdminGraph.tsx","admin/services/AdminDiagramService.ts","admin/components/AdminDiagram.tsx","admin/services/AdminDiagramCommentService.ts","admin/components/AdminDiagramComment.tsx","admin/AdminPage.tsx","shared/components/ImageWrapper.tsx","form/components/FormBool.tsx","form/components/FormDropdown.tsx","form/dto/FeedbackDTO.ts","form/components/FormFeedbackModal.tsx","form/services/FeedbackService.ts","form/enum/QuestionType.ts","form/enum/OperatorType.ts","form/components/FormFeedback.tsx","form/components/FormInputNumber.tsx","form/components/FormMatrix.tsx","form/components/FormRadioImage.tsx","form/components/FormRadioList.tsx","form/utils/FormUtils.ts","shared/utils/JsPDFUtils.ts","form/services/FileService.ts","shared/utils/GraphPDFUtils.ts","form/components/FormPVGraph.tsx","form/enum/FormType.ts","form/dto/ResponseDTO.ts","form/dto/ResponsesDTO.ts","form/services/DecisionTreeService.ts","form/services/DiagramCommentService.ts","form/services/DiagramService.ts","form/components/FormDiagram.tsx","shared/utils/ReactGAUtils.ts","shared/enum/RoleEnum.ts","shared/config/ssoAuthConfig.js","login/services/AuthService.ts","user/services/SubmissionService.ts","form/components/FormResults.tsx","form/components/FormStepper.tsx","form/components/FormSummary.tsx","form/services/TranslationService.ts","form/components/FormLongText.tsx","form/components/FormCheckbox.tsx","form/components/FormTable.tsx","form/FormPage.tsx","shared/components/Logo.tsx","shared/components/ToolLogo.tsx","shared/components/SelectLanguage.tsx","shared/components/About.tsx","shared/components/LogoutIcon.tsx","shared/components/NavigateButton.tsx","layout/MainLayout.tsx","login/components/AdminRoute.tsx","login/components/PrivateRoute.tsx","login/components/UserRoute.tsx","login/dto/LoginDTO.ts","login/components/ButtonLogin.tsx","login/LoginPage.tsx","login/components/ButtonAnonymous.tsx","login/components/ButtonLoginSSO.tsx","login/AnonymousPage.tsx","editor/decision-tree/import-jquery.js","editor/decision-tree/shapes/transition.ts","editor/decision-tree/enums/shape.ts","editor/decision-tree/shapes/node-answer-list.ts","editor/decision-tree/shapes/node-answer-bool.ts","editor/decision-tree/shapes/node-range.ts","editor/decision-tree/shapes/node-computation.ts","editor/decision-tree/shapes/node-question-result.ts","editor/decision-tree/shapes/node-result.ts","editor/decision-tree/shapes/node-min.ts","editor/decision-tree/shapes/node-max.ts","editor/decision-tree/shapes/transition-lhs.ts","editor/decision-tree/shapes/transition-rhs.ts","editor/decision-tree/shapes/node-script.ts","editor/decision-tree/shapes/node-concat.ts","editor/decision-tree/shapes/node-multiple-answer-list.ts","editor/decision-tree/shapes/transition-concat.ts","editor/decision-tree/reader.ts","editor/decision-tree/policies/connection-create-policy.ts","editor/services/DecisionTreeEditorService.ts","editor/models/Schema.ts","editor/decision-tree/components/topbar.tsx","editor/decision-tree/components/sidebar.tsx","editor/services/AdminScriptsService.ts","editor/decision-tree/canvas.tsx","editor/dto/ScriptDTO.ts","editor/code-editor/components/JS/CodeSidebarJS.tsx","editor/code-editor/components/JS/QuestionSelectorJS.tsx","editor/code-editor/CodeEditorJS.tsx","editor/services/AdminHTMLService.ts","editor/dto/HtmlDTO.ts","editor/code-editor/components/HTML/CodeSidebarHTML.tsx","editor/services/RequirementsService.ts","editor/code-editor/components/HTML/QuestionSelectorHTML.tsx","editor/code-editor/CodeEditorHTML.tsx","editor/models/Requirements.ts","editor/requirement-editor/components/RequirementSidebar.tsx","editor/models/Requirement.ts","editor/requirement-editor/RequirementEditor.tsx","editor/form-editor/services/FormEditorService.ts","editor/form-editor/components/FormEditorSidebar.tsx","editor/form-editor/operator.enum.ts","editor/form-editor/components/FormEditorTopbar.tsx","editor/form-editor/components/FormEditorWorkPlace.tsx","editor/DecisionTreeEditorPage.tsx","editor/form-editor/FormEditor.tsx","editor/diagram-editor/component/DiagramEditorSideBar.tsx","editor/diagram-editor/DiagramEditor.tsx","user/UserPage.tsx","App.tsx","serviceWorker.ts","form/components/FormLoading.tsx","form/components/NoConnectionModal.tsx","index.tsx"],"names":["SeverityEnum","REGEX_DISPOSITION","FileUtils","response","filename","getFileName","saveAs","data","contentDisposition","headers","result","exec","DataStorage","sessionStorage","APIService","bearerAuth","http","this","axios","create","baseURL","process","getItem","AdminDecisionTreeService","get","name","responseType","files","formData","FormData","file","append","post","delete","FormService","formName","dto","then","submission","put","pdf","xlsx","value","key","t","asRichText","isUI","asStaticMarkup","isURL","translation","returnObjects","hasOwnProperty","image","url","RichText","render","ReactDOMServer","renderToStaticMarkup","asText","types","join","params","AdminDecisionTrees","props","decisionTreeService","toast","fileUpload","formService","state","decisionTrees","displayConfirmation","toDelete","getDecisionTrees","getMany","setState","e","uploadMany","show","severity","SUCCESS","detail","clear","catch","err","message","ERROR","downloadOne","downloadFile","deleteOne","label","icon","onClick","className","handleDelete","autoFocus","rowData","Fragment","type","handleDownload","title","ref","el","accept","customUpload","multiple","uploadHandler","handleUpload","rows","paginator","rowsPerPageOptions","field","filter","filterPlaceholder","header","checkIfValue","body","actionBodyTemplate","headerStyle","width","bodyStyle","textAlign","visible","modal","style","footer","renderDialogFooter","onHide","fontSize","React","Component","withTranslation","AdminFormService","AdminForm","fService","uploadForm","downloadForm","AdminRequirementsService","AdminRequirements","requirementService","uploadRequirements","downloadRequirements","AdminScriptsService","AdminScripts","scriptService","scripts","getScripts","fileName","Script","script","ScriptDTO","AdminEditorJs","displayNewScriptConfirmation","editorText","editorScriptName","handleEditorChange","bind","resetEditorText","handleOneUpload","str","includes","getOne","extensionPart","substring","lastIndexOf","uploadOne","event","getScriptToViewText","originalEvent","target","innerHTML","Text","onChange","currentTarget","placeholder","required","height","defaultLanguage","defaultValue","onRowClick","validationWindowForNewScript","AdminHtmlsService","AdminHtmls","htmlService","htmls","getHtmls","HtmlDTO","html","options","id","AdminEditorHtml","optionChoice","displayNewHtmlConfirmation","showChoice","getHtmlToViewText","selection","displayProperty","AdminSubmissionsService","AdminSubmissions","submissionService","downloadSubmissions","AdminTranslationService","code","AdminTranslations","translationService","translations","getTranslations","uploadTranslations","console","log","AdminImageService","AdminImages","imageService","images","getImages","AdminGraphService","AdminGraph","graphService","uploadManyGraph","AdminDiagramService","diagram","AdminDiagram","diagramService","uploadManyDiagram","downloadDiagrams","AdminDiagramCommentService","comment","number","AdminDiagramComment","diagramCommentService","uploadManyDiagramComments","downloadDiagramComments","AdminPage","hasLocalTranslations","window","location","href","ImageWrapper","historyListener","isOnMobile","changedWidth","isOpen","test","navigator","userAgent","history","listen","action","handleCloseModal","size","document","getElementsByClassName","maxWidth","handleOpenModal","src","alt","Header","closeButton","Title","Body","increaseImage","decreaseImage","withRouter","FormBool","onValueChange","checked","currentValue","FormDropdown","values","push","option","isSubQuestion","valueProperty","v","disabled","FeedbackDTO","screenshot","FormFeedbackModal","form","Object","assign","length","handleFormChange","inputFileRef","querySelector","click","onSubmit","onClose","variant","htmlFor","TextArea","handleUploadClick","hidden","handleFileChange","handleSubmit","FeedbackService","QuestionType","OperatorType","FormFeedback","feedbackService","submitFeedback","FormInputNumber","showValidationMessage","modified","resetValueIfInvalid","bindOnBlur","bindKeyup","prevProps","prevState","snapshot","parentQuestion","question","validation","Number","isInteger","min","getElementById","addEventListener","onBlur","toLowerCase","pattern","step","max","split","modif","onKeyPress","preventDefault","unit","FormMatrix","service","imageList","i","handleClick","backgroundImage","FormRadioImage","FormRadioList","list","FormUtils","callback","questions","MULTIPLE","subQuestions","subQ","undefined","RADIO","MATRIX","RADIO_IMAGE","NUMBER","BOOL","allValues","questionHistory","currentQuestion","allowNextQuestion","questionId","subQuestion","responses","leftValue","operator","rightValue","cache","decision_tree","has","decisionTree","computeDecisionTree","set","EQUAL","NOT_EQUAL","AND","OR","GREATER_THAN","GREATER_THAN_OR_EQUAL_TO","LOWER_THAN","LOWER_THAN_OR_EQUAL_TO","IN","NOT_IN","STRICTLY_EQUAL","STRICTLY_INCLUDED","STRICTLY_INCLUDES","checkCondition","lhs","rhs","Array","isArray","JSON","stringify","sort","every","elem","JsPDFUtils","jsPDF","API","events","addFileToVFS","addFont","FileService","GraphPDFUtils","ms","Promise","resolve","setTimeout","appTitle","graphTitle","graphComparisonTitle","diagramTitle","appLogo","bbriLogo","initJsPDF","graphHTML","tabHTML","resultHTML","diagramHTML","offset","langImage","Image","logoImageRapport","addImage","bbriImage","bbriImageRapport","widthBbri","setFontSize","setFont","text","innerText","replace","classList","add","timeout","html2canvas","canvasGraph","toDataURL","tabCanvas","imgHeight","heightLeft","position","addPage","diagramImage","getElementsByTagName","fetch","svgRes","svgString","trim","decodedSvgString","unescape","encodeURIComponent","base64","btoa","imageSource","base64SvgToBase64Png","diagramPNG","save","returnPromise","remove","originalBase64","img","createElement","onload","appendChild","canvas","ratio","clientWidth","clientHeight","removeChild","ctx","getContext","drawImage","onerror","FormType","colors","FormPVGraph","currentX","highlightedDot","activeHighlightedDot","lineColors","_getColors","graphs","dots","_calculateMinMax","nextProps","nextContext","x","graph","dot","color","Math","floor","random","pow","toString","slice","newList","temp","activeLabel","parseInt","onGraphClick","find","d","currentGraph","g","currentDot","y","LineChart","margin","top","right","bottom","left","onMouseMove","handleOnMouseMove","handleLineChartClick","XAxis","dataKey","domain","dy","ticks","getTicks","YAxis","angle","Legend","iconType","wrapperStyle","paddingTop","Tooltip","cursor","formatter","getValueForEachGraph","labelFormatter","map","Line","isAnimationActive","stroke","strokeWidth","activeDot","r","c","concat","coord","ReferenceDot","onMouseEnter","handleOnMouseEnter","viewBox","fill","dx","isFront","ReferenceLine","segment","strokeDasharray","display","flexDirection","alignItems","alignSelf","exportGraphPDF","ResponsiveContainer","_renderGraph","ResponseDTO","ResponsesDTO","questionKey","DecisionTreeService","DiagramCommentService","DiagramService","res","FormDiagram","initialComment","imgRef","_getModalHeader","justifyContent","previousComments","marginRight","border","lastComment","newPreviousComments","splice","currentComment","createRef","comments","relatedComments","content","imageSize","showModal","searchedComment","newLegend","handleResize","current","newDots","mouseUp","imgSize","filteredComment","a","b","_handleOnCommentClick","minWidth","minHeight","forEach","onDrag","handleDrag","onStart","onStop","editable","zIndex","_getDots","imageName","onLoad","handleImageLoad","marginTop","marginBottom","_getComments","legends","l","maxHeight","onLegendDelete","allPrismicKeys","backgroundColor","borderColor","onLegendSave","newComment","onCommentSave","newNumber","onCommentDelete","com","previousComment","ReactGAUtils","category","URL","hostname","endsWith","startsWith","RoleEnum","msalConfig","auth","clientId","authority","knownAuthorities","redirectUri","navigateToLoginRequestUrl","cacheLocation","storeAuthStateInCookie","loginRequest","scopes","REACT_APP_SSO_SCOPE","msalInstance","PublicClientApplication","AuthService","setItem","accessToken","removeItem","user","acquireTokenPopup","sub","idTokenClaims","email","exp","role","ADMIN","USER","idToken","logoutPopup","token","decodeJWT","userSSOString","userSSO","parse","Date","now","output","decodeURIComponent","atob","m","p","charCodeAt","toUpperCase","SubmissionService","patch","description","ids","FormResults","xlsxData","html2render","fileService","authService","openConfirmationModal","openSubmissionNameModal","openSubmissionEditModal","newSubmissionName","htmlTable","allComments","graphInfo","diagramName","diagramInfo","_replaceTagsInHTMLFile","GRAPH","_getGraphInfo","_getDiagramInfo","graphDecisionTree","diagramDecisionTree","getOneDiagramByName","getAllComments","htmlFile","qst","re","RegExp","tableHeader","q","table","_getTableBody","entries","results","replaceAnswer","requirement","replaceRequirement","replaceRequirementTitle","answer","_replaceHtml","requirementTitle","regex","resultImage","regexImage","re2","re3","re4","resultTitle","regexTitle","tableBody","_getTableRow","row","PREVIOUS_QUESTION","today","month","getMonth","getDate","getFullYear","workbook","utils","book_new","summaryData","getTodayDate","createSummaryTable","summaryWs","aoa_to_sheet","book_append_sheet","requirementsWs","disclaimerWs","sendXLSX","Capacitor","isNativePlatform","Browser","open","writeFile","mainContainer","element","scale","svgRendering","scrollX","scrollY","sendPDF","doc","headerHeight","logoImage","autoTable","startY","previous","finalY","summaryTable","head","headStyles","font","fontStyle","styles","myDataRows","myDataRow","cells","el1","el2","el3","shift","unshift","writeMultiLinesText","pageHeight","internal","pageSize","lines","splitTextToSize","line","getTextDimensions","h","formatValue","valueToRender","requirementMap","optionI","answers","prefix","suffix","rowSpan","dangerouslySetInnerHTML","__html","loginSSO","ReactGA","getCategory","onResetClick","replaceElement","createRowResults","scroll","REQUIREMENT","exportXLSX","exportPDF","_getTableResult","onlyResult","onPreviousClick","connected","reload","loginAndSave","focusOnShow","onShow","activeElement","blur","idSubmittedSubmission","saveLastSubmission","responseDTO","updateSubmission","_id","FormStepper","currentStep","steps","isMobile","innerWidth","verticalStepper","resize","generateStepper","i18n","on","removeEventListener","off","Map","getValidValues","createStep","shortTitle","conditions","displaySummaryStep","stopPropagation","onStepClick","stepperClassName","handleStepperClick","active","liClassName","canClicked","handleStepClick","FormSummary","submitButton","submitForm","onSubmitForm","sizeQuestion","_getSize","DROPDOWN","toDisplayInSummary","onQuestionClick","CHECKBOX","TABLE","TEXT_ONLY","handleSubmitClick","padding","transform","TranslationService","FormLongText","FormCheckbox","valueList","currentValues","FormTable","dropDownValues","column","_createTableLine","_getHtml","DECISION_TREE","button","addRow","rmRow","_createTableHeader","_createTableBody","onSizeChange","rmRowAction","keys","pop","formQuestion","STRING","onResultChange","FormPage","summary","submittedSubmission","waitValue","conditionalInfo","subQuestionsValues","currentSubQuestion","defaultValuesTable","lastQuestion","optional","getCurrentValue","isValid","requiredOptionnal","LONG_TEXT","getSubQuestionValid","validRows","rowValues","isRowValid","targetQuestion","_findQuestionByName","handleKeyUp","pathname","search","even","go","gotoSummary","handlePreviousClick","generateImage","getForm","resultQuestions","refImages","imageValues","refImageValues","language","getSubQuestion","displayResult","canSubmitQuestion","handleNextClick","nextQuestionOnFill","lastValues","indexOf","index","questionIndex","findIndex","goToLast","getNextQuestion","nextQuestion","goToSummary","all","computeDefaultValue","computeConditionalInfo","fromSummary","previousQuestion","questionHistoryId","default_value","getQuestionHistoryByQuestion","datas","info","getValue","handleValueChange","fontWeight","createElementQuestion","handleSubmitForm","handleQuestionClick","handleReset","imageNodes","subInfo","hasPreviousPage","iconPos","isLastQuestion","hasNextPage","Logo","ToolLogo","SelectLanguage","changeLanguage","languages","item","handleSelectChange","About","openAbout","LogoutIcon","showDialog","logout","logo","path","MainLayout","isAuth","NavigateButton","children","AdminRoute","to","from","PrivateRoute","UserRoute","LoginDTO","password","useHistory","useLocation","block","login","onLogin","LoginPage","messages","closable","sticky","Password","handleLogin","useState","clicked","setClicked","marginLeft","AnonymousPage","ButtonLoginSSO","$","jQuery","jquery","draw2d2","draw2d","Transition","sourceFigure","targetFigure","router","layout","connection","VertexRouter","selectable","userData","NAME","hybridPorts","port","setSource","setTarget","arrow","decoration","ArrowDecorator","setDimension","setBackgroundColor","setTargetDecorator","setColor","_displayInfo","tableInfo","shape","TableLayout","resizeable","bgColor","setPadding","memento","source","decorator","sourceDecorator","hashString","targetDecorator","attr","Connection","NODE_LIST","nodeAnswerList","defaultLabel","shapeBackgroundColor","iconBackgroundColor","iconStyle","iconColor","nodeAnswerBool","nodeComputation","nodeQuestionResult","end","nodeScript","nodeRange","nodeResult","nodeMin","nodeMax","nodeConcat","nodeMultipleAnswerList","NodeAnswerList","radius","evaluatedElementRadio","evaluatedElement","branches","nodeLabel","basic","Label","locator","CenterLocator","circle","Circle","XYRelPortLocator","outputPorts","upPort","HybridPort","setName","downPort","addPort","TopLocator","BottomLocator","fontColor","bold","SVGFigure","NodeAnswerBool","NodeRange","setDraggable","NodeComputation","NodeQuestionResult","Rectangle","NodeResult","NodeMin","nodes","NodeMax","TransitionLHS","bar","BarDecorator","setSourceDecorator","PolylineMidpointLocator","TransitionRHS","NodeScript","NodeConcat","NodeMultipleAnswerList","TransitionConcat","Reader","json","io","ConnectionCreatePolicy","policy","DragConnectionCreatePolicy","DecisionTreeEditorService","schema","currentTreeName","Schema","isEditor","Topbar","decisionTreeEditorService","leftContents","rightContents","displayDialog","currentKeyName","showConfirmDeleteDialog","showJSONDialog","currentZoom","currentBetonJSON","lockSelect","nbrRootNodes","figures","root","Writer","marshal","view","hasRootNode","saveSchema","setChanges","refreshSchemasList","status","WARN","error","hideSidebar","getBetonJSON","tree","Button","_updateSchemaName","_deleteDecisionTree","updateSchemaName","refreshSchemas","factor","setZoom","schemaName","changeSchemaName","currenToolsName","tooltip","changeZoom","resetZoom","getCommandStack","undo","redo","changes","tooltipOptions","_renderDialogFooter","resetSidebar","_renderDeleteFooter","prompt","Sidebar","schemaMenu","schemas","schemasItems","currentSchema","isSchemasRefreshing","showNotSaveDialog","menuFilter","loading","findAll","_refreshMenuItems","currentSchemaName","_refreshMenuItemsWithAPI","command","resetRefreshSchemas","newTree","resetChanges","setCurrentToolsName","onMouseLeave","data-shape","schemasFiltered","model","_getNodeList","_newTree","_renderNotSaveFooter","allNodes","Canvas","zoomLevel","selectedShape","nodeType","currentName","showEditPanel","showNewTreeDialog","currentKey","decisionTreeList","questionList","questionListAnswerList","questionListAnswerBool","questionListResult","refreshScriptsState","scriptList","currentToolsName","_getDatas","_draw","_setupCanvas","_setupOnDropAction","reader","loadJSONAndSchema","getFigures","figure","_updateFigureName","getLines","_updateLineName","branche","connectionId","_setLineLabel","if","than","installEditPolicy","ShowGridEditPolicy","FadeoutDecorationPolicy","setScrollArea","WheelZoomPolicy","getSelection","getPrimarySelection","parent","CommandDelete","execute","nodeName","sourcePort","targetPort","connections","j","k","brancheParent","bar2","getQuestionsByType","getAllDecisionTrees","onDrop","droppedDomNode","isRoot","dataset","node","node_answer_bool","node_answer_list","node_min","node_max","node_range","node_computation","node_question_result","node_result","node_script","node_concat","node_multiple_answer_list","getFigure","setLabel","_getComputationName","transition","getLine","_getShapeText","newSchemaName","_createNewTree","createSchema","_refreshSchemas","inputId","_setSelectionUserDataValue","_getQuestionsByType","optionLabel","_getRootCheckboxContent","placeHolder","inputText","inputTextScript","multiSelect","appendTo","_getQuestionDecisionTreeSelectContent","triStateCheckbox","String","_getNodeResultContentByType","uuid","_uuidv4","ifDropdown","thanInputNumber","nodeList","nodeT","crypto","getRandomValues","Uint8Array","contentValueType","nodeC","maxItt","itt","DataTable","scrollable","scrollHeight","Column","hsType","_resetNodeConnectionCompute","tLHS","tRHS","_getNodeAnswerListContent","_getNodeAnswerBoolContent","_getNodeResultContent","_getNodeRangeContent","_getNodeQuestionResultContent","_getNodeMinMaxContent","_getNodeComputationContent","_getNodeScriptContent","_getNodeConcatContent","_getNodeMultipleAnswerListContent","editPanel","_deleteShape","sel","_getConfigurationContent","ReadOnlySelectionPolicy","uninstallEditPolicy","BoundingboxSelectionPolicy","_loadSchema","ZOOM_PERCENT","CodeSidebarJS","isScriptsRefreshing","selectedScript","reloadScripts","actionDeleteScript","actionDownloadScript","deletedScript","chooseLabel","uploadLabel","mode","auto","handleNewScript","scriptsFiltered","tableClassName","onSelectionChange","scriptToViewCallback","stateStorage","selectionMode","QuestionSelectorJS","questionSelected","sortable","filterMatchMode","CodeEditorJS","scriptDefaultScript","refreshScript","scriptToView","handleDeletedScript","selectQuestion","editorRef","trigger","deleteScript","downloadScript","handleEditorDidMount","editor","monaco","resetRefreshScriptsState","onMount","isActive","CodeSidebarHTML","actionDownloadHtml","actionDeleteHtml","rowClassName","_rowClass","RequirementsService","editorRequirementName","QuestionSelectorHTML","selectionQuestion","selectionQuestionValue","prismicKeys","selectionPrismic","requirements","selectionRequirement","selectionRequirementAnswer","_getQuestions","getRequirements","getPrismicKeys","selector","questionValueSelected","requirementSelected","requirementAnswerSelected","prismicKeySelected","imagePrismicKeySelected","filterBy","transformObj","CodeEditorHTML","htmlDefaultScript","selectQuestionValue","selectRequirement","selectRequirementAnswer","selectPrismicKey","selectImagePrismicKey","deleteHtml","downloadHtml","getOneIsActive","activeOne","Requirements","RequirementSidebar","isRequirementsRefreshing","selectedRequirement","displayNewRequirementConfirmation","reloadRequirements","resetRefreshRequirementsState","deleteRequirementAction","actionDownloadRequirement","resetEditor","obj","handleUploadObject","resetDeleteRequirementAction","dtoRequi","jsonString","f","File","deletedRequirement","setCurrentRequirement","requirementToViewCallback","onRowReorder","reorderableColumns","rowReorder","rowReorderIcon","Requirement","group","uppercase","RequirementEditor","refreshRequirement","requirementName","answerName","handleDeletedRequirement","groups","filteredGroups","refreshRequirementsState","allDecisionTrees","prefixes","suffixes","filteredPrefixes","filteredSuffixes","displayDeleteConfirmation","deleteRequirement","downloadRequirement","currentRequirement","searchGroup","searchPrefix","searchSuffix","getSchemas","requirementsArrived","counter","groupAlreadyStored","prefixAlreadyStored","suffixAlreadyStored","uniq_fast","seen","out","len","decisionTreesTransform","dt","schemasTransform","query","requi","suggestions","completeMethod","dropdown","onIcon","offIcon","FormEditorService","FormEditorSidebar","formEditorService","displayAddQuestionDialog","displayDeleteAllQuestionDialog","displayConfigFormDialog","currentNewQuestionType","currentNewQuestion","formConfig","googleTag","prismic","updateQuestions","refreshQuestionList","addQuestion","onQuestionSelection","questionTypes","formConfigPrismic","commonPrismic","_onQuestionOrder","columnKey","_addNewEmptyQuestion","_renderAddQuestionDialogFooter","deleteAllQuestion","saveFormConfig","OperatorEnum","FormEditorTopbar","showRenameDialog","showFormDialog","currentQuestionName","_updateCurrentQuestionName","_deleteQuestion","updateQuestionName","deleteQuestion","newName","saveForm","_renderRenameDialogFooter","currentForm","FormEditorWorkPlace","nodeCount","nodeCount2","isEditing","displayAddValueDialog","displayAddConditionDialog","displayDeleteConditionDialog","displayEditConditionDialog","currentImageValue","currentSubQuestionType","currentImageName","currentCondition","currentNode","currentConditionEdit","activeIndex","rowIndex","vTable","_setQuestionValueWithDoubleKey","parseFloat","valueAsNumber","editMode","_editValue","_editImageValue","rowEditor","_actionBodyTemplate","table2","lazy","tableSubQuestions","_editSubQuestion","_arrayBodyTemplate","_checkboxBodyTemplate","_getNodeById","_getConditionByType","condition","prototype","call","_actionImageBodyTemplate","_getConditionsDatas","side","_editConditionalInfo","_actionConditionalInfoBodyTemplate","operatorList","_getContentByType","onTabChange","leftIcon","_setQuestionValue","currentQuestion2","legend","_getSizeContent","_getQuestionConfig","_getQuestionImages","showClear","_getQuestionConditions","nodeTemplate","_getNodeTemplate","_getQuestionConditionalInfo","_renderAddValueDialogFooter","_getAddValueDialogContent","_renderAddConditionDialogFooter","_getAddConditionContent","cols","Lang","FormEditor","currentQuestionNameTwo","_getPrismicKeys","_getDecisionTrees","updateForm","_refreshQuestionList","_renameQuestion","DiagramEditorSideBar","currentDiagram","allDiagrams","displayNewDiagramConfirmation","newDiagramImage","newDiagramName","handleNewDiagram","onNewDiagram","onDiagramSelection","DiagramEditor","showDeleteModal","_getDiagrams","getAllDiagram","keysString","updateOne","newDiagram","updateComment","deleteComment","DecisionTreeEditorPage","MIN_ZOOM_LVL","MAX_ZOOM_LVL","ZOOM_FACTOR","canvasPosition","displayShapeForm","isReadOnly","menuItems","activeTool","activeItem","UserPage","submissions","selectedSubmissions","comparedGraphs","highlightedValues","editState","currentSubmission","duplicateSubmissionName","newSubmissionDescription","showArchiveModal","showArchiveMultipleModal","showArchivedValue","showDuplicateModal","showNameModal","showDescriptionModal","_getSubmissions","getUserSubmissions","changeSubmissionName","changeSubmissionDescription","getHighlightedValueForDatable","hlValue","validValue","currentRow","overflow","textOverflow","handleUpdateClick","handleResultClick","handleCloneClick","handleArchiveClick","handleDeleteClick","submissionDate","toLocaleDateString","archiveSubmission","archiveMultipleSubmission","s","deleteSubmission","handleDuplicate","handleChangeName","autoResize","handleChangeDescription","flexWrap","alignContent","handleNewSimulation","handleCompareSimulation","gap","handleArchiveMultipleClick","archived","nameTemplate","descriptionTemplate","dateTemplate","resultTemplate","actionButtonTemplate","handleGraphClick","archiveModal","archiveMultipleModal","deleteModal","duplicateModal","nameModal","descriptionModal","use","initReactI18next","BrowserDetector","HttpApi","init","lng","fallbackLng","backend","loadPath","App","languagesMapping","REACT_APP_URL_FR","REACT_APP_URL_NL","updateTitle","initLanguage","updateLanguage","searchParams","locale","targetLanguage","favicon","Idfa","getAdvertisingInfo","getPlatform","isAdTrackingLimited","initialize","buttonText","contentClasses","buttonClasses","disableStyles","Boolean","match","FormLoading","NoConnectionModal","backdrop","apiUrl","ReactDOM","Network","addListener","Suspense","fallback","polling","getStatus","StrictMode","instance","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.cf644a6a.chunk.js","sourcesContent":["export enum SeverityEnum {\r\n SUCCESS = 'success',\r\n INFO = 'info',\r\n WARN = 'warn',\r\n ERROR = 'error'\r\n}","import { AxiosResponse } from 'axios';\r\nimport { saveAs } from 'file-saver';\r\n\r\nconst REGEX_DISPOSITION = /filename=\"(.+)\"/;\r\n\r\nexport class FileUtils {\r\n\r\n /**\r\n * Download a file via AxiosResponse\r\n */\r\n static downloadFile(response: AxiosResponse) {\r\n const filename = FileUtils.getFileName(response);\r\n if (filename) {\r\n saveAs(response.data, filename);\r\n }\r\n }\r\n\r\n static getFileName(response: AxiosResponse) {\r\n const contentDisposition = response.headers['content-disposition'];\r\n if (!contentDisposition) {\r\n return null;\r\n }\r\n\r\n\r\n const result = REGEX_DISPOSITION.exec(contentDisposition);\r\n\r\n if (!result) {\r\n return null;\r\n }\r\n return result[1];\r\n }\r\n}","export const DataStorage = sessionStorage;\r\nexport const KEY_ACCESS_TOKEN = 'access_token';\r\nexport const KEY_AUTH_TYPE = \"auth_type\"\r\nexport const KEY_SSO_USER = 'sso_user'\r\n","import axios, { AxiosInstance } from 'axios';\r\nimport { DataStorage, KEY_ACCESS_TOKEN } from '../constants';\r\n\r\nexport class APIService {\r\n\r\n protected http: AxiosInstance;\r\n\r\n constructor(bearerAuth: boolean = true) {\r\n this.http = axios.create({\r\n baseURL: process.env.REACT_APP_API_URL,\r\n headers: (bearerAuth)\r\n ? { 'Authorization': `Bearer ${DataStorage.getItem(KEY_ACCESS_TOKEN)}` }\r\n : {}\r\n });\r\n }\r\n}","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport { DecisionTree } from '../models/DecisionTree';\r\n\r\nexport class AdminDecisionTreeService extends APIService {\r\n\r\n /**\r\n * Get many decision trees\r\n */\r\n getMany(): Promise> {\r\n return this.http.get('/decision-trees');\r\n }\r\n\r\n /**\r\n * Download a decision tree by name\r\n */\r\n downloadOne(name: string) {\r\n return this.http.get(`/decision-trees/${name}/download`, { responseType: 'blob' });\r\n }\r\n\r\n /**\r\n * Upload many decision trees\r\n */\r\n uploadMany(files: File[]) {\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append('files', file);\r\n }\r\n return this.http.post(`/decision-trees/upload`, formData);\r\n }\r\n\r\n /**\r\n * Delete one decision tree\r\n */\r\n deleteOne(name: string) {\r\n return this.http.delete(`/decision-trees/${name}`);\r\n }\r\n}","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport { ResponsesDTO } from '../dto/ResponsesDTO';\r\nimport { Form } from '../models/Form';\r\nimport { RequirementResults } from '../models/RequirementResults';\r\nimport { TFunction } from 'i18next';\r\nimport { RichText } from 'prismic-reactjs';\r\nimport ReactDOMServer from 'react-dom/server';\r\nimport { Submission } from '../../user/models/Submission';\r\nimport { SubmissionDTO } from \"../dto/SubmissionDTO\"\r\nimport {SubmissionSubmitDTO} from \"../dto/SubmissionSubmitDTO\";\r\n\r\nexport class FormService extends APIService {\r\n\r\n /**\r\n * Get form\r\n */\r\n getForm(name: string) {\r\n return this.http.get
('/forms/' + name);\r\n }\r\n\r\n /**\r\n * Submit the form responses\r\n */\r\n async submitForm(formName: string, dto: SubmissionDTO) {\r\n return this.http.post(`/forms/${ formName }/submissions`, dto)\r\n .then((response: AxiosResponse) => {\r\n return response.data;\r\n });\r\n }\r\n\r\n async updateSubmission(formName: string, submission: SubmissionDTO) : Promise {\r\n return this.http.put(`/forms/${formName}/submissions`, submission)\r\n .then((response: AxiosResponse) => {\r\n return response.data\r\n })\r\n }\r\n\r\n async sendPDF(formName: string, pdf: any) {\r\n const formData = new FormData();\r\n formData.append('pdf', pdf)\r\n return this.http.post(`forms/${ formName }/pdf`, formData);\r\n }\r\n\r\n async sendXLSX(formName: string, xlsx: any) {\r\n return this.http.post(`forms/${ formName }/xlsx`, xlsx);\r\n }\r\n\r\n checkIfValue(value: any, key: string) {\r\n return (value) ? value : key;\r\n }\r\n\r\n t(t: TFunction, key: string, asRichText: boolean, isUI: boolean = false, asStaticMarkup: boolean = false, isURL: boolean = false): any {\r\n if (isUI) {\r\n return t(key);\r\n }\r\n else if (isURL) {\r\n const translation = t(key, { returnObjects: true }) as any;\r\n if (translation.hasOwnProperty('image')) {\r\n return `${process.env.REACT_APP_API_URL}/images/${translation.image}/download`;\r\n }\r\n else if (translation.hasOwnProperty('url')) {\r\n return translation.url;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n if (asRichText) {\r\n const result = RichText.render(t(key, { returnObjects: true }));\r\n return result ? (asStaticMarkup ? ReactDOMServer.renderToStaticMarkup(result as any) : result) : t(key);\r\n }\r\n else {\r\n const result = RichText.asText(t(key, { returnObjects: true }));\r\n return result ? result : key;\r\n }\r\n }\r\n\r\n getQuestionsByType(t: string[]) {\r\n let types = t.join(',')\r\n return this.http.get('/forms/questions', { params: { types } });\r\n }\r\n}\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { DecisionTree } from \"../models/DecisionTree\";\r\nimport { AdminDecisionTreeService } from \"../services/AdminDecisionTreeService\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n decisionTrees: DecisionTree[];\r\n displayConfirmation: boolean;\r\n toDelete: string | null;\r\n}\r\n\r\nclass AdminDecisionTrees extends React.Component {\r\n private readonly decisionTreeService: AdminDecisionTreeService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.decisionTreeService = new AdminDecisionTreeService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n this.formService = new FormService();\r\n this.state = {\r\n decisionTrees: [],\r\n displayConfirmation: false,\r\n toDelete: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getDecisionTrees();\r\n }\r\n\r\n /**\r\n * Refresh decision trees\r\n */\r\n getDecisionTrees() {\r\n this.decisionTreeService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.setState({ decisionTrees: response.data });\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.decisionTreeService\r\n .uploadMany(e.files)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_decision_tree_upload_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n this.getDecisionTrees();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_decision_tree_upload_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload(name: string) {\r\n this.decisionTreeService\r\n .downloadOne(name)\r\n .then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n /**\r\n * Delete decision tree\r\n */\r\n handleDelete() {\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n\r\n this.decisionTreeService.deleteOne(this.state.toDelete).then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_decision_tree_delete_toast_success\"),\r\n });\r\n this.setState({ displayConfirmation: false, toDelete: null });\r\n this.getDecisionTrees();\r\n });\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
\r\n this.setState({ displayConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.handleDelete()}\r\n autoFocus\r\n />\r\n
\r\n );\r\n }\r\n\r\n actionBodyTemplate(rowData: DecisionTree) {\r\n return (\r\n \r\n this.handleDownload(rowData.name)}\r\n >\r\n \r\n this.setState({ displayConfirmation: true, toDelete: rowData.name })\r\n }\r\n >\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n
\r\n
\r\n (this.fileUpload = el)}\r\n accept=\"application/json\"\r\n customUpload={true}\r\n multiple={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n // emptyTemplate={() =>

{this.t(\"ui_admin_decision_tree_upload_content\")}

}\r\n >\r\n
\r\n
\r\n \r\n \r\n \r\n this.actionBodyTemplate(rowData)\r\n }\r\n headerStyle={{ width: \"8rem\" }}\r\n bodyStyle={{ textAlign: \"center\" }}\r\n >\r\n \r\n this.setState({ displayConfirmation: false })}\r\n >\r\n
\r\n \r\n Are you sure you want to proceed?\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminDecisionTrees);\r\n","import { APIService } from '../../shared/services/APIService';\r\n\r\nexport class AdminFormService extends APIService {\r\n\r\n /**\r\n * Upload and replace the form\r\n *\r\n * @role Admin\r\n */\r\n uploadForm(file: File) {\r\n const formData = new FormData();\r\n formData.append('form', file);\r\n return this.http.put('/forms/upload', formData);\r\n }\r\n\r\n /**\r\n * Download the current form\r\n */\r\n downloadForm() {\r\n return this.http.get('/forms/download', { responseType: 'blob' });\r\n }\r\n}","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { AdminFormService } from \"../services/AdminFormService\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from '../../form/services/FormService';\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n}\r\n\r\nclass AdminForm extends React.Component {\r\n private readonly fService: FormService;\r\n private readonly formService: AdminFormService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.fService = new FormService();\r\n this.formService = new AdminFormService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.formService\r\n .uploadForm(e.files[0])\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.fService.t(this.t, \"ui_admin_form_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.fService.t(this.t, \"ui_admin_form_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload() {\r\n this.formService.downloadForm().then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n this.handleDownload()}\r\n />\r\n (this.fileUpload = el)}\r\n accept=\"application/json\"\r\n customUpload={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n // emptyTemplate={() =>

{this.t(\"ui_admin_form_upload\")}

}\r\n >\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminForm);\r\n","import { APIService } from '../../shared/services/APIService';\r\n\r\nexport class AdminRequirementsService extends APIService {\r\n\r\n /**\r\n * Upload and replace the requirements\r\n *\r\n * @role Admin\r\n */\r\n uploadRequirements(file: File) {\r\n const formData = new FormData();\r\n formData.append('requirements', file);\r\n return this.http.put('/forms/default/requirements/upload', formData);\r\n }\r\n\r\n /**\r\n * Download the current requirements\r\n *\r\n * @role Admin\r\n */\r\n downloadRequirements() {\r\n return this.http.get('/forms/default/requirements/download', { responseType: 'blob' });\r\n }\r\n}","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React, { Component } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { AdminRequirementsService } from \"../services/AdminRequirementsService\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from '../../form/services/FormService';\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n}\r\n\r\nclass AdminRequirements extends Component {\r\n private readonly requirementService: AdminRequirementsService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.requirementService = new AdminRequirementsService();\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.requirementService\r\n .uploadRequirements(e.files[0])\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_requirements_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_requirements_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload() {\r\n this.requirementService.downloadRequirements().then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n this.handleDownload()}\r\n />\r\n (this.fileUpload = el)}\r\n accept=\"application/json\"\r\n customUpload={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n >\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminRequirements);\r\n","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport {Script} from \"../models/Script\";\r\nimport {ScriptDTO} from \"../dto/ScriptDTO\";\r\n\r\nexport class AdminScriptsService extends APIService {\r\n\r\n /**\r\n * Get many scripts\r\n */\r\n getMany(): Promise> {\r\n return this.http.get('/scripts');\r\n }\r\n\r\n /**\r\n * Get the text of a script by name\r\n */\r\n getOne(name: string): Promise>{\r\n return this.http.get(`/scripts/${name}/text`);\r\n }\r\n \r\n /**\r\n * Download a script by name\r\n */\r\n downloadOne(name: string) {\r\n return this.http.get(`/scripts/${name}/download`, { responseType: 'blob' });\r\n }\r\n\r\n\r\n /**\r\n * Upload many scripts\r\n */\r\n uploadMany(files: File[]) {\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append('files', file);\r\n }\r\n return this.http.post(`/scripts/upload`, formData);\r\n }\r\n\r\n /**\r\n * Upload one script\r\n */\r\n uploadOne(dto: ScriptDTO) {\r\n return this.http.post(`/scripts/uploadone`, dto);\r\n }\r\n\r\n /**\r\n * Delete one script\r\n */\r\n deleteOne(name: string) {\r\n return this.http.delete(`/scripts/${name}`);\r\n }\r\n}\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { Script } from \"../models/Script\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport { AdminScriptsService } from \"../services/AdminScriptsService\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n scripts: Script[];\r\n displayConfirmation: boolean;\r\n toDelete: string | null;\r\n}\r\n\r\nclass AdminScripts extends React.Component {\r\n private readonly scriptService: AdminScriptsService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.scriptService = new AdminScriptsService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n this.formService = new FormService();\r\n this.state = {\r\n scripts: [],\r\n displayConfirmation: false,\r\n toDelete: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getScripts();\r\n }\r\n\r\n /**\r\n * Refresh scripts\r\n */\r\n getScripts() {\r\n this.scriptService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.setState({ scripts: response.data });\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.scriptService\r\n .uploadMany(e.files)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_script_upload_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n this.getScripts();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_script_upload_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload(name: string) {\r\n this.scriptService\r\n .downloadOne(name)\r\n .then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n /**\r\n * Delete script\r\n */\r\n handleDelete() {\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n\r\n this.scriptService.deleteOne(this.state.toDelete).then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_script_delete_toast_success\"),\r\n });\r\n this.setState({ displayConfirmation: false, toDelete: null });\r\n this.getScripts();\r\n });\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
\r\n this.setState({ displayConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.handleDelete()}\r\n autoFocus\r\n />\r\n
\r\n );\r\n }\r\n\r\n actionBodyTemplate(rowData: Script) {\r\n return (\r\n \r\n this.handleDownload(rowData.fileName)}\r\n >\r\n \r\n this.setState({ displayConfirmation: true, toDelete: rowData.fileName })\r\n }\r\n >\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n
\r\n
\r\n (this.fileUpload = el)}\r\n accept=\"application/x-javascript\"\r\n customUpload={true}\r\n multiple={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n // emptyTemplate={() =>

{this.t(\"ui_admin_script_upload_content\")}

}\r\n >\r\n
\r\n
\r\n \r\n \r\n \r\n this.actionBodyTemplate(rowData)\r\n }\r\n headerStyle={{ width: \"8rem\" }}\r\n bodyStyle={{ textAlign: \"center\" }}\r\n >\r\n \r\n this.setState({ displayConfirmation: false })}\r\n >\r\n
\r\n \r\n Are you sure you want to proceed?\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminScripts);\r\n","export class Script {\r\n\r\n constructor(\r\n readonly fileName: string,\r\n readonly script: string\r\n ) {\r\n }\r\n}\r\n","export class ScriptDTO {\r\n\r\n constructor(\r\n readonly fileName: string,\r\n readonly script: string\r\n ) {\r\n }\r\n }","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Input } from \"@bbri/ui\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { Script } from \"../models/Script\";\r\nimport { ScriptDTO } from \"../dto/ScriptDTO\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport { AdminScriptsService } from \"../services/AdminScriptsService\";\r\n\r\n\r\nimport Editor from \"@monaco-editor/react\";\r\n\r\ninterface Props extends WithTranslation {\r\n\r\n}\r\n\r\ninterface States {\r\n scripts: Script[];\r\n displayConfirmation: boolean;\r\n displayNewScriptConfirmation: boolean;\r\n toDelete: string | null;\r\n script: Script;\r\n editorText: string;\r\n editorScriptName: string;\r\n}\r\n\r\nclass AdminEditorJs extends React.Component {\r\n private readonly scriptService: AdminScriptsService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.scriptService = new AdminScriptsService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n this.formService = new FormService();\r\n this.state = {\r\n scripts: [],\r\n displayConfirmation: false,\r\n displayNewScriptConfirmation: false,\r\n toDelete: null,\r\n script: new Script(\"\", \"\"),\r\n editorText: \"\",\r\n editorScriptName: \"\"\r\n };\r\n\r\n this.handleEditorChange = this.handleEditorChange.bind(this);\r\n this.resetEditorText = this.resetEditorText.bind(this);\r\n this.handleOneUpload = this.handleOneUpload.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getScripts();\r\n }\r\n\r\n\r\n /**\r\n * Refresh scripts\r\n */\r\n getScripts() {\r\n this.scriptService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.setState({ scripts: response.data });\r\n });\r\n }\r\n\r\n getScriptToViewText(str: string) {\r\n if (!str || !str.includes(\".js\")) {\r\n return;\r\n }\r\n\r\n this.scriptService\r\n .getOne(str)\r\n .then((response: AxiosResponse) => {\r\n\r\n this.setState({ editorText: response.data, editorScriptName: str });\r\n\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.scriptService\r\n .uploadMany(e.files)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_script_upload_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n this.getScripts();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_script_upload_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n\r\n /**\r\n * On upload for one script\r\n */\r\n handleOneUpload() {\r\n\r\n let fileName = this.state.editorScriptName;\r\n\r\n if (!fileName) {\r\n return;\r\n }\r\n\r\n let extensionPart = fileName.substring(fileName.lastIndexOf('.'));\r\n const allowedTypes = ['.js'];\r\n\r\n // = Validate the types\r\n if (!allowedTypes.includes(extensionPart)) {\r\n fileName += \".js\";\r\n }\r\n\r\n const dto = new ScriptDTO(fileName, this.state.editorText);\r\n\r\n this.scriptService\r\n .uploadOne(dto)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_script_upload_one_toast_success\", false),\r\n });\r\n this.resetEditorText();\r\n this.getScripts();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_script_upload_one_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload(name: string) {\r\n this.scriptService\r\n .downloadOne(name)\r\n .then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n /**\r\n * Delete script\r\n */\r\n handleDelete() {\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n\r\n this.scriptService.deleteOne(this.state.toDelete).then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_script_delete_toast_success\"),\r\n });\r\n this.setState({ displayConfirmation: false, toDelete: null });\r\n this.getScripts();\r\n this.resetEditorText();\r\n });\r\n }\r\n\r\n\r\n renderDialogFooter() {\r\n return (\r\n
\r\n this.setState({ displayConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.handleDelete()}\r\n autoFocus\r\n />\r\n
\r\n );\r\n }\r\n\r\n actionBodyTemplate(rowData: Script) {\r\n return (\r\n \r\n this.handleDownload(rowData.fileName)}\r\n >\r\n \r\n this.setState({ displayConfirmation: true, toDelete: rowData.fileName })\r\n }\r\n >\r\n \r\n );\r\n }\r\n\r\n actionHeaderTemplate(rowData: Script) {\r\n return (\r\n \r\n\r\n \r\n );\r\n }\r\n\r\n handleEditorChange(value, event) {\r\n\r\n this.setState({ editorText: value });\r\n }\r\n\r\n onRowClick(event) {\r\n this.getScriptToViewText(event.originalEvent.target.innerHTML);\r\n }\r\n\r\n\r\n resetEditorText() {\r\n this.setState({\r\n editorText: \"//create a new script\",\r\n displayNewScriptConfirmation: false,\r\n editorScriptName: \"\"\r\n });\r\n }\r\n\r\n validationWindowForNewScript() {\r\n return (\r\n
\r\n this.setState({ displayNewScriptConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.resetEditorText()}\r\n autoFocus\r\n />\r\n
\r\n );\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n
\r\n\r\n
\r\n\r\n \r\n this.setState({ editorScriptName: e.currentTarget.value })}\r\n\r\n placeholder=\"Script name\"\r\n required={true}\r\n style={{ width: '20rem' }}\r\n />\r\n \r\n\r\n
\r\n\r\n
\r\n {/* this.setState({ value: e.currentTarget.value })}\r\n rows={5} \r\n cols={50} \r\n autoResize /> */}\r\n\r\n \r\n
\r\n\r\n
\r\n \r\n this.setState({ displayNewScriptConfirmation: true })\r\n }\r\n />\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n this.actionBodyTemplate(rowData)\r\n }\r\n headerStyle={{ width: \"8rem\" }}\r\n bodyStyle={{ textAlign: \"center\" }}\r\n >\r\n \r\n this.setState({ displayConfirmation: false })}\r\n >\r\n
\r\n \r\n Are you sure you want to proceed?\r\n
\r\n \r\n\r\n\r\n this.setState({ displayNewScriptConfirmation: false })}\r\n >\r\n
\r\n \r\n Are you sure you want to proceed?\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withTranslation()(AdminEditorJs);\r\n\r\n\r\n","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport {Html} from \"../models/HTML\";\r\nimport {HtmlDTO} from \"../dto/HtmlDTO\";\r\n\r\nexport class AdminHtmlsService extends APIService {\r\n\r\n /**\r\n * Get many htmls\r\n */\r\n getMany(): Promise> {\r\n return this.http.get('/htmls');\r\n }\r\n\r\n /**\r\n * Get the text of a html by name\r\n */\r\n getOne(name: string): Promise> {\r\n return this.http.get(`/htmls/${name}/text`);\r\n }\r\n \r\n /**\r\n * Download a html by name\r\n */\r\n downloadOne(name: string) {\r\n return this.http.get(`/htmls/${name}/download`, { responseType: 'blob' });\r\n }\r\n \r\n \r\n /**\r\n * Upload many htmls\r\n */\r\n uploadMany(files: File[]) {\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append('files', file);\r\n }\r\n return this.http.post(`/htmls/upload`, formData);\r\n }\r\n\r\n /**\r\n * Upload one html\r\n */\r\n uploadOne(dto: HtmlDTO) {\r\n return this.http.post(`/htmls/uploadone`, dto);\r\n } \r\n\r\n /**\r\n * Delete one html\r\n */\r\n deleteOne(name: string) {\r\n return this.http.delete(`/htmls/${name}`);\r\n }\r\n}\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { Html } from \"../models/HTML\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport { AdminHtmlsService } from \"../services/AdminHTMLService\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n htmls: Html[];\r\n displayConfirmation: boolean;\r\n toDelete: string | null;\r\n}\r\n\r\nclass AdminHtmls extends React.Component {\r\n private readonly htmlService: AdminHtmlsService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.htmlService = new AdminHtmlsService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n this.formService = new FormService();\r\n this.state = {\r\n htmls: [],\r\n displayConfirmation: false,\r\n toDelete: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getHtmls();\r\n }\r\n\r\n /**\r\n * Refresh htmls\r\n */\r\n getHtmls() {\r\n this.htmlService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.setState({ htmls: response.data });\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.htmlService\r\n .uploadMany(e.files)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_html_upload_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n this.getHtmls();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_html_upload_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload(name: string) {\r\n this.htmlService\r\n .downloadOne(name)\r\n .then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n /**\r\n * Delete html\r\n */\r\n handleDelete() {\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n\r\n this.htmlService.deleteOne(this.state.toDelete).then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_html_delete_toast_success\"),\r\n });\r\n this.setState({ displayConfirmation: false, toDelete: null });\r\n this.getHtmls();\r\n });\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
\r\n this.setState({ displayConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.handleDelete()}\r\n autoFocus\r\n />\r\n
\r\n );\r\n }\r\n\r\n actionBodyTemplate(rowData: Html) {\r\n return (\r\n \r\n this.handleDownload(rowData.fileName)}\r\n >\r\n \r\n this.setState({ displayConfirmation: true, toDelete: rowData.fileName })\r\n }\r\n >\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n
\r\n
\r\n (this.fileUpload = el)}\r\n accept=\".html\"\r\n customUpload={true}\r\n multiple={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n // emptyTemplate={() =>

{this.t(\"ui_admin_html_upload_content\")}

}\r\n >\r\n
\r\n
\r\n \r\n \r\n \r\n this.actionBodyTemplate(rowData)\r\n }\r\n headerStyle={{ width: \"8rem\" }}\r\n bodyStyle={{ textAlign: \"center\" }}\r\n >\r\n \r\n this.setState({ displayConfirmation: false })}\r\n >\r\n
\r\n \r\n Are you sure you want to proceed?\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminHtmls);\r\n","export class HtmlDTO {\r\n\r\n constructor(\r\n readonly fileName: string,\r\n readonly html: string\r\n ) {\r\n }\r\n }","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Input, Select } from \"@bbri/ui\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { Html } from \"../models/HTML\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport { AdminHtmlsService } from \"../services/AdminHTMLService\";\r\n\r\nimport Editor from \"@monaco-editor/react\";\r\nimport { HtmlDTO } from \"../dto/HtmlDTO\";\r\n\r\n\r\nconst options = [\r\n {\r\n id: 0,\r\n name: \"Create or update html file\",\r\n },\r\n {\r\n id: 1,\r\n name: \"Upload existing html file\",\r\n }\r\n];\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n optionChoice: any;\r\n htmls: Html[];\r\n displayConfirmation: boolean;\r\n displayNewHtmlConfirmation: boolean;\r\n toDelete: string | null;\r\n editorText: string;\r\n editorScriptName: string;\r\n}\r\n\r\nclass AdminEditorHtml extends React.Component {\r\n private readonly htmlService: AdminHtmlsService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.htmlService = new AdminHtmlsService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n this.formService = new FormService();\r\n this.state = {\r\n optionChoice: options[0],\r\n htmls: [],\r\n displayConfirmation: false,\r\n displayNewHtmlConfirmation: false,\r\n toDelete: null,\r\n editorText: \"\",\r\n editorScriptName: \"\"\r\n };\r\n\r\n this.showChoice = this.showChoice.bind(this);\r\n this.handleEditorChange = this.handleEditorChange.bind(this);\r\n this.resetEditorText = this.resetEditorText.bind(this);\r\n this.handleOneUpload = this.handleOneUpload.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getHtmls();\r\n }\r\n\r\n\r\n /**\r\n * Show the choosen option\r\n */\r\n showChoice(value, event) {\r\n this.setState({ optionChoice: value });\r\n }\r\n\r\n\r\n /**\r\n * Refresh htmls\r\n */\r\n getHtmls() {\r\n this.htmlService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.setState({ htmls: response.data });\r\n });\r\n }\r\n\r\n getHtmlToViewText(str: string) {\r\n if (!str || !str.includes(\".html\")) {\r\n return;\r\n }\r\n\r\n this.htmlService\r\n .getOne(str)\r\n .then((response: AxiosResponse) => {\r\n\r\n this.setState({ editorText: response.data, editorScriptName: str });\r\n\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.htmlService\r\n .uploadMany(e.files)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_html_upload_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n this.getHtmls();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_html_upload_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On upload for one html\r\n */\r\n handleOneUpload() {\r\n\r\n let fileName = this.state.editorScriptName;\r\n\r\n if (!fileName) {\r\n return;\r\n }\r\n\r\n let extensionPart = fileName.substring(fileName.lastIndexOf('.'));\r\n const allowedTypes = ['.html'];\r\n\r\n // = Validate the types\r\n if (!allowedTypes.includes(extensionPart)) {\r\n fileName += \".html\";\r\n }\r\n\r\n\r\n const dto = new HtmlDTO(fileName, this.state.editorText);\r\n\r\n this.htmlService\r\n .uploadOne(dto)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_html_upload_one_toast_success\", false),\r\n });\r\n this.resetEditorText();\r\n this.getHtmls();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_html_upload_one_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload(name: string) {\r\n this.htmlService\r\n .downloadOne(name)\r\n .then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n /**\r\n * Delete html\r\n */\r\n handleDelete() {\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n\r\n this.htmlService.deleteOne(this.state.toDelete).then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_html_delete_toast_success\"),\r\n });\r\n this.setState({ displayConfirmation: false, toDelete: null });\r\n this.getHtmls();\r\n });\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
\r\n this.setState({ displayConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.handleDelete()}\r\n autoFocus\r\n />\r\n
\r\n );\r\n }\r\n\r\n actionBodyTemplate(rowData: Html) {\r\n return (\r\n \r\n this.handleDownload(rowData.fileName)}\r\n >\r\n \r\n this.setState({ displayConfirmation: true, toDelete: rowData.fileName })\r\n }\r\n >\r\n \r\n );\r\n }\r\n\r\n\r\n handleEditorChange(value, event) {\r\n this.setState({ editorText: value });\r\n }\r\n\r\n onRowClick(event) {\r\n this.getHtmlToViewText(event.originalEvent.target.innerHTML);\r\n }\r\n\r\n\r\n resetEditorText() {\r\n this.setState({\r\n editorText: \"\",\r\n displayNewHtmlConfirmation: false,\r\n editorScriptName: \"\"\r\n });\r\n }\r\n\r\n validationWindowForNewScript() {\r\n return (\r\n
\r\n this.setState({ displayNewHtmlConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.resetEditorText()}\r\n autoFocus\r\n />\r\n
\r\n );\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n {/*\r\n Create new html option \r\n */}\r\n\r\n {this.state.optionChoice.id === 0 &&\r\n <>\r\n
\r\n\r\n \r\n this.setState({ editorScriptName: e.currentTarget.value })}\r\n\r\n placeholder=\"Html file name\"\r\n required={true}\r\n style={{ width: '20rem' }}/>\r\n \r\n\r\n
\r\n
\r\n \"\r\n value={this.state.editorText}\r\n onChange={this.handleEditorChange}/>\r\n
\r\n
\r\n this.setState({ displayNewHtmlConfirmation: true })}/>\r\n \r\n
\r\n
\r\n this.setState({ displayNewHtmlConfirmation: false })}\r\n >\r\n
\r\n \r\n Are you sure you want to proceed?\r\n
\r\n \r\n
\r\n \r\n }\r\n\r\n {/*\r\n Upload existing html option \r\n */}\r\n\r\n {this.state.optionChoice.id === 1 &&\r\n <>\r\n
\r\n (this.fileUpload = el)}\r\n accept=\".html\"\r\n customUpload={true}\r\n multiple={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n // emptyTemplate={() =>

{this.t(\"ui_admin_html_upload_content\")}

}\r\n >\r\n
\r\n \r\n }\r\n\r\n\r\n {/*\r\n Used for both options \r\n */}\r\n
\r\n \r\n \r\n \r\n this.actionBodyTemplate(rowData)\r\n }\r\n headerStyle={{ width: \"8rem\" }}\r\n bodyStyle={{ textAlign: \"center\" }}\r\n >\r\n \r\n this.setState({ displayConfirmation: false })}\r\n >\r\n
\r\n \r\n Are you sure you want to proceed?\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminEditorHtml);\r\n","import { APIService } from '../../shared/services/APIService';\r\n\r\nexport class AdminSubmissionsService extends APIService {\r\n /**\r\n * Download the current submissions\r\n *\r\n * @role Admin\r\n */\r\n downloadSubmissions() {\r\n return this.http.get('/forms/default/submissions/download', { responseType: 'blob' });\r\n }\r\n}\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport React, { Component } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { AdminSubmissionsService } from \"../services/AdminSubmissionsService\";\r\nimport { RichText } from \"prismic-reactjs\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n}\r\n\r\nclass AdminSubmissions extends Component {\r\n private readonly submissionService: AdminSubmissionsService;\r\n private t: TFunction;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.submissionService = new AdminSubmissionsService();\r\n\r\n this.t = this.props.t;\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload() {\r\n this.submissionService.downloadSubmissions().then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n this.handleDownload()}\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminSubmissions);\r\n","import { APIService } from '../../shared/services/APIService';\r\nimport { AxiosResponse } from \"axios\";\r\n\r\nexport class AdminTranslationService extends APIService {\r\n\r\n /**\r\n * Upload and replace the translations\r\n *\r\n * @role Admin\r\n */\r\n uploadTranslations(files: File[]) {\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append('files', file);\r\n }\r\n return this.http.put('/translations/upload', formData);\r\n }\r\n\r\n /**\r\n * Get many decision trees\r\n */\r\n getMany(): Promise> {\r\n return this.http.get('/translations');\r\n }\r\n\r\n /**\r\n * Download a decision tree by name\r\n */\r\n downloadOne(code: string) {\r\n return this.http.get(`/translations/${code}/download`, { responseType: 'blob' });\r\n }\r\n\r\n deleteOne(code: string) {\r\n return this.http.delete(`/translations/${code}`);\r\n }\r\n}\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from 'primereact/button';\r\nimport { Card } from \"primereact/card\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { AdminTranslationService } from \"../services/AdminTranslationService\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { Image } from \"../models/Image\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { Column } from \"primereact/column\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport { Dialog } from \"primereact/dialog\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n translations: any[];\r\n displayConfirmation: boolean;\r\n toDelete: string | null;\r\n}\r\n\r\nclass AdminTranslations extends React.Component {\r\n private readonly translationService: AdminTranslationService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.translationService = new AdminTranslationService();\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n\r\n this.state = {\r\n translations: [],\r\n displayConfirmation: false,\r\n toDelete: null,\r\n };\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.getTranslations();\r\n }\r\n\r\n /**\r\n * Refresh decision trees\r\n */\r\n getTranslations() {\r\n this.translationService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.setState({ translations: response.data });\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.translationService\r\n .uploadTranslations(e.files)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_translations_toast_success\"),\r\n });\r\n this.fileUpload?.clear();\r\n this.getTranslations();\r\n })\r\n .catch(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: this.t(\"ui_admin_translations_toast_error\"),\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload(code: string) {\r\n this.translationService\r\n .downloadOne(code)\r\n .then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n handleDelete() {\r\n console.log(this.state);\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n\r\n this.translationService.deleteOne(this.state.toDelete).then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_translation_delete_toast_success\"),\r\n });\r\n this.setState({ displayConfirmation: false, toDelete: null });\r\n this.getTranslations();\r\n });\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
\r\n this.setState({ displayConfirmation: false }) }\r\n className=\"p-button-text\"\r\n />\r\n this.handleDelete() }\r\n autoFocus\r\n />\r\n
\r\n );\r\n }\r\n\r\n actionBodyTemplate(rowData: any) {\r\n return (\r\n \r\n this.handleDownload(rowData.code) }\r\n >\r\n \r\n this.setState({ displayConfirmation: true, toDelete: rowData.code })\r\n }\r\n >\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el) }/>\r\n
\r\n
\r\n (this.fileUpload = el) }\r\n accept=\"application/json\"\r\n customUpload={ true }\r\n multiple={ true }\r\n uploadHandler={ (e: { files: File[] }) => this.handleUpload(e) }\r\n // emptyTemplate={() =>

{this.t(\"ui_admin_translations_upload\")}

}\r\n >\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n this.actionBodyTemplate(rowData)\r\n }\r\n headerStyle={ { width: \"8rem\" } }\r\n bodyStyle={ { textAlign: \"center\" } }\r\n >\r\n \r\n this.setState({ displayConfirmation: false }) }\r\n >\r\n
\r\n \r\n Are you sure you want to proceed?\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminTranslations);\r\n","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport { Image } from '../models/Image';\r\n\r\nexport class AdminImageService extends APIService {\r\n\r\n /**\r\n * Get many decision trees\r\n */\r\n getMany(): Promise> {\r\n return this.http.get('/images');\r\n }\r\n\r\n /**\r\n * Download a decision tree by name\r\n */\r\n downloadOne(name: string) {\r\n return this.http.get(`/images/${name}/download`, { responseType: 'blob' });\r\n }\r\n\r\n /**\r\n * Upload many decision trees\r\n */\r\n uploadMany(files: File[]) {\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append('files', file);\r\n }\r\n return this.http.post(`/images/upload`, formData);\r\n }\r\n\r\n /**\r\n * Delete one decision tree\r\n */\r\n deleteOne(name: string) {\r\n return this.http.delete(`/images/${name}`);\r\n }\r\n}\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Column } from \"primereact/column\";\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { Image } from \"../models/Image\";\r\nimport { AdminImageService } from \"../services/AdminImageService\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n images: Image[];\r\n displayConfirmation: boolean;\r\n toDelete: string | null;\r\n}\r\n\r\nclass AdminImages extends React.Component {\r\n private readonly imageService: AdminImageService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.imageService = new AdminImageService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n this.formService = new FormService();\r\n this.state = {\r\n images: [],\r\n displayConfirmation: false,\r\n toDelete: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getImages();\r\n }\r\n\r\n /**\r\n * Refresh decision trees\r\n */\r\n getImages() {\r\n this.imageService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.setState({ images: response.data });\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.imageService\r\n .uploadMany(e.files)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_image_upload_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n this.getImages();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_image_upload_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload(name: string) {\r\n this.imageService\r\n .downloadOne(name)\r\n .then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n /**\r\n * Delete decision tree\r\n */\r\n handleDelete() {\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n\r\n this.imageService.deleteOne(this.state.toDelete).then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_image_delete_toast_success\"),\r\n });\r\n this.setState({ displayConfirmation: false, toDelete: null });\r\n this.getImages();\r\n });\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
\r\n this.setState({ displayConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.handleDelete()}\r\n autoFocus\r\n />\r\n
\r\n );\r\n }\r\n\r\n actionBodyTemplate(rowData: Image) {\r\n return (\r\n \r\n this.handleDownload(rowData.name)}\r\n >\r\n \r\n this.setState({ displayConfirmation: true, toDelete: rowData.name })\r\n }\r\n >\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n
\r\n
\r\n (this.fileUpload = el)}\r\n accept=\"image/*\"\r\n customUpload={true}\r\n multiple={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n // emptyTemplate={() =>

{this.t(\"ui_admin_image_upload_content\")}

}\r\n >\r\n
\r\n
\r\n \r\n \r\n \r\n this.actionBodyTemplate(rowData)\r\n }\r\n headerStyle={{ width: \"8rem\" }}\r\n bodyStyle={{ textAlign: \"center\" }}\r\n >\r\n \r\n this.setState({ displayConfirmation: false })}\r\n >\r\n
\r\n \r\n Are you sure you want to proceed?\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminImages);\r\n","import { APIService } from '../../shared/services/APIService';\r\n\r\nexport class AdminGraphService extends APIService {\r\n\r\n /**\r\n * Upload and replace the form\r\n *\r\n * @role Admin\r\n */\r\n uploadManyGraph(file: File) {\r\n const formData = new FormData();\r\n formData.append('graphs', file);\r\n return this.http.put('/graph/uploadmany', formData);\r\n }\r\n\r\n \r\n\r\n}","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FileUtils } from \"../../shared/utils/FileUtils\";\r\nimport { AdminFormService } from \"../services/AdminFormService\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from '../../form/services/FormService';\r\nimport { AdminGraphService } from \"../services/AdminGraphService\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n}\r\n\r\nclass AdminGraph extends React.Component {\r\n private readonly fService: FormService;\r\n private readonly graphService: AdminGraphService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.fService = new FormService();\r\n this.graphService = new AdminGraphService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.graphService\r\n .uploadManyGraph(e.files[0])\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.fService.t(this.t, \"ui_admin_graph_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.fService.t(this.t, \"ui_admin_graph_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * On download\r\n */\r\n// handleDownload() {\r\n// this.formService.downloadForm().then((response: AxiosResponse) => {\r\n// FileUtils.downloadFile(response);\r\n// });\r\n// }\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n this.handleDownload()}\r\n />\r\n (this.fileUpload = el)}\r\n accept=\"application/json\"\r\n customUpload={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n // emptyTemplate={() =>

{this.t(\"ui_admin_form_upload\")}

}\r\n >\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminGraph);\r\n","import { Diagram } from '../../form/models/Diagram';\r\nimport { APIService } from '../../shared/services/APIService';\r\n\r\nexport class AdminDiagramService extends APIService {\r\n\r\n // Download diagram\r\n downloadDiagrams() {\r\n return this.http.get('/diagrams/download', { responseType: 'blob' });\r\n }\r\n\r\n // Get all diagrams\r\n getAllDiagram() {\r\n return this.http.get(\"/diagrams\")\r\n }\r\n\r\n // Create diagram\r\n updateOne(diagram: Diagram) {\r\n return this.http.put(\"/diagrams/updateone\", diagram)\r\n }\r\n\r\n /**\r\n * Upload and replace the form\r\n *\r\n * @role Admin\r\n */\r\n uploadManyDiagram(file: File) {\r\n const formData = new FormData();\r\n formData.append('diagrams', file);\r\n return this.http.put('/diagrams/uploadmany', formData);\r\n }\r\n\r\n // Delete diagram\r\n deleteOne(name: string) {\r\n return this.http.delete(\"/diagrams/\" + name)\r\n }\r\n\r\n}","import { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FormService } from '../../form/services/FormService';\r\nimport { AdminDiagramService } from \"../services/AdminDiagramService\";\r\nimport {AxiosResponse} from \"axios\";\r\nimport {FileUtils} from \"../../shared/utils/FileUtils\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n}\r\n\r\nclass AdminDiagram extends React.Component {\r\n private readonly fService: FormService;\r\n private readonly diagramService: AdminDiagramService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.fService = new FormService();\r\n this.diagramService = new AdminDiagramService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.diagramService\r\n .uploadManyDiagram(e.files[0])\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.fService.t(this.t, \"ui_admin_diagram_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.fService.t(this.t, \"ui_admin_diagram_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n handleDownload() {\r\n this.diagramService.downloadDiagrams().then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n this.handleDownload()}\r\n />\r\n (this.fileUpload = el)}\r\n accept=\"application/json\"\r\n customUpload={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n >\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminDiagram);\r\n","import { DiagramComment } from '../../form/models/DiagramComment';\r\nimport { APIService } from '../../shared/services/APIService';\r\n\r\nexport class AdminDiagramCommentService extends APIService {\r\n\r\n // Get all diagrams\r\n getMany() {\r\n return this.http.get(\"/diagramComments\")\r\n }\r\n\r\n /**\r\n * Upload and replace the form\r\n *\r\n * @role Admin\r\n */\r\n\r\n downloadDiagramComments() {\r\n return this.http.get('/diagramComments/download', { responseType: 'blob' });\r\n }\r\n uploadManyDiagramComments(file: File) {\r\n const formData = new FormData();\r\n formData.append('diagramComments', file);\r\n return this.http.put('/diagramComments/uploadmany', formData);\r\n }\r\n\r\n updateComment(comment : DiagramComment) {\r\n return this.http.put('/diagramComments/updateone', comment)\r\n }\r\n\r\n deleteComment(number: number) {\r\n return this.http.delete(\"/diagramComments/\" + number)\r\n }\r\n\r\n}","import { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FormService } from '../../form/services/FormService';\r\nimport { AdminDiagramCommentService } from \"../services/AdminDiagramCommentService\";\r\nimport {AxiosResponse} from \"axios\";\r\nimport {FileUtils} from \"../../shared/utils/FileUtils\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n}\r\n\r\nclass AdminDiagramComment extends React.Component {\r\n private readonly fService: FormService;\r\n private readonly diagramCommentService: AdminDiagramCommentService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private t: TFunction;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.fService = new FormService();\r\n this.diagramCommentService = new AdminDiagramCommentService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n this.diagramCommentService\r\n .uploadManyDiagramComments(e.files[0])\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.fService.t(this.t, \"ui_admin_comment_toast_success\", false),\r\n });\r\n this.fileUpload?.clear();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.fService.t(this.t, \"ui_admin_comment_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n handleDownload() {\r\n this.diagramCommentService.downloadDiagramComments().then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n this.handleDownload()}\r\n />\r\n (this.fileUpload = el)}\r\n accept=\"application/json\"\r\n customUpload={true}\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n // emptyTemplate={() =>

{this.t(\"ui_admin_form_upload\")}

}\r\n >\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminDiagramComment);\r\n","import React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport AdminDecisionTrees from \"./components/AdminDecisionTrees\";\r\nimport AdminForm from \"./components/AdminForm\";\r\nimport AdminRequirements from \"./components/AdminRequirements\";\r\nimport AdminScripts from \"./components/AdminScripts\";\r\nimport AdminEditorJs from \"./components/AdminEditorJs\";\r\nimport AdminHtmls from \"./components/AdminHTML\";\r\nimport AdminEditorHtml from \"./components/AdminEditorHtml\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Button } from \"primereact/button\";\r\nimport AdminSubmissions from './components/AdminSubmissions';\r\nimport AdminTranslations from \"./components/AdminTranslations\";\r\nimport AdminImages from \"./components/AdminImages\";\r\nimport AdminGraph from \"./components/AdminGraph\"\r\nimport AdminDiagram from \"./components/AdminDiagram\"\r\nimport AdminEditorDiagram from \"./components/AdminEditorDiagram\"\r\nimport AdminDiagramComment from \"./components/AdminDiagramComment\"\r\n\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n}\r\n\r\nclass AdminPage extends React.Component {\r\n render() {\r\n const hasLocalTranslations = process.env.hasOwnProperty('REACT_APP_LOCAL_TRANSLATIONS') ?? process.env.REACT_APP_LOCAL_TRANSLATIONS === 'true' ?? false;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n window.location.href = 'editor' }\r\n />\r\n \r\n
\r\n
\r\n \r\n
\r\n {\r\n hasLocalTranslations &&\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {/*
*/}\r\n {/* */}\r\n {/*
*/}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AdminPage);\r\n","import { Modal } from \"@bbri/ui\";\r\nimport React, { Component } from \"react\";\r\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\r\nimport \"./ImageWrapper.scss\";\r\nimport { withTranslation, WithTranslation } from 'react-i18next';\r\nimport { Button } from \"primereact/button\";\r\n\r\ninterface Props extends WithTranslation, RouteComponentProps {\r\n src: string;\r\n alt: string;\r\n}\r\n\r\ninterface States {\r\n isOpen: boolean;\r\n}\r\n\r\nclass ImageWrapper extends Component {\r\n\r\n private historyListener: null | (() => void);\r\n\r\n isOnMobile: boolean = false;\r\n\r\n changedWidth: boolean = false;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.historyListener = null;\r\n\r\n this.state = {\r\n isOpen: false,\r\n };\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n this.isOnMobile = true;\r\n }\r\n }\r\n\r\n handleOpenModal() {\r\n this.historyListener = this.props.history.listen((location, action) => {\r\n if (action === \"POP\") {\r\n this.handleCloseModal();\r\n }\r\n });\r\n\r\n this.setState({ isOpen: true });\r\n }\r\n\r\n handleCloseModal() {\r\n\r\n if (this.historyListener) {\r\n this.historyListener();\r\n }\r\n\r\n this.setState({ isOpen: false });\r\n }\r\n\r\n increaseImage() {\r\n let size = document.getElementsByClassName('image-wrapper-zoom')[0]['width'];\r\n document.getElementsByClassName('image-wrapper-zoom')[0]['style'].maxWidth = \"1000%\";\r\n document.getElementsByClassName('image-wrapper-zoom')[0]['width'] = size + ((size * 50) / 100);\r\n\r\n }\r\n\r\n decreaseImage() {\r\n let size = document.getElementsByClassName('image-wrapper-zoom')[0]['width'];\r\n document.getElementsByClassName('image-wrapper-zoom')[0]['width'] = size - ((size * 50) / 100);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n this.handleOpenModal()}\r\n >\r\n {this.props.alt}/\r\n \r\n \r\n {this.state.isOpen && (\r\n this.handleCloseModal()}>\r\n \r\n {this.props.alt}\r\n \r\n \r\n\r\n \r\n {this.isOnMobile ?\r\n
\r\n this.increaseImage()}\r\n className=\"button\"\r\n autoFocus\r\n />\r\n this.decreaseImage()}\r\n className=\"button\"\r\n autoFocus\r\n />\r\n
\r\n : null}\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(withRouter(ImageWrapper));\r\n","import { Radio } from \"@bbri/ui\";\r\nimport { TFunction } from \"i18next\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n name: string;\r\n currentValue: boolean | null;\r\n onValueChange: (v: any) => void;\r\n}\r\n\r\nclass FormBool extends React.Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\r\n this.props.onValueChange(true)}>\r\n this.props.onValueChange(true)}\r\n />\r\n \r\n
\r\n
\r\n {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */}\r\n this.props.onValueChange(false)}>\r\n this.props.onValueChange(false)}\r\n />\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormBool);\r\n","import { Select } from \"@bbri/ui\";\r\nimport { TFunction } from \"i18next\";\r\nimport React, { Component } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n name: string;\r\n currentValue: string;\r\n values: string[];\r\n onValueChange: (v: string) => void;\r\n disabled?: boolean;\r\n isSubQuestion?: boolean;\r\n}\r\n\r\nclass FormDropdown extends Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = props.t;\r\n this.formService = new FormService();\r\n }\r\n\r\n render() {\r\n let options: { id: string; name: string }[] = [];\r\n\r\n for (const value of this.props.values) {\r\n options.push({\r\n id: value,\r\n // @ts-ignore\r\n name: RichText.asText(this.t(value, { returnObjects: true })),\r\n });\r\n }\r\n\r\n for (const option of options) {\r\n if (!option.name) {\r\n option.name = option.id;\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {\r\n if (v.id !== this.props.currentValue) {\r\n this.props.onValueChange(v.id);\r\n }\r\n }}\r\n disabled={this.props.disabled}\r\n />\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormDropdown);\r\n","export class FeedbackDTO {\r\n\r\n constructor(\r\n readonly comment: string,\r\n readonly screenshot?: File | null\r\n ) {\r\n }\r\n}","import { Button, Input } from \"@bbri/ui\";\r\nimport { TFunction } from \"i18next\";\r\nimport React, { Component } from \"react\";\r\nimport { UploadCloud, X } from \"react-feather\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { FeedbackDTO } from \"../dto/FeedbackDTO\";\r\nimport \"./FormFeedbackModal.scss\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n onSubmit: (dto: FeedbackDTO) => Promise;\r\n onClose: () => void;\r\n}\r\n\r\ninterface States {\r\n form: {\r\n comment: string;\r\n screenshot?: File | null;\r\n };\r\n}\r\n\r\nclass FormFeedbackModal extends Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.t = this.props.t;\r\n this.formService = new FormService();\r\n this.state = {\r\n form: {\r\n comment: \"\",\r\n screenshot: null,\r\n },\r\n };\r\n }\r\n\r\n handleFormChange(name: string, value: any) {\r\n let form = Object.assign({}, this.state.form);\r\n form[name] = value;\r\n\r\n this.setState({\r\n form,\r\n });\r\n }\r\n\r\n /**\r\n * Handle: onChange for upload input\r\n */\r\n handleFileChange(files: FileList | null) {\r\n if (files && files.length) {\r\n this.handleFormChange(\"screenshot\", files[0]);\r\n }\r\n }\r\n\r\n /**\r\n * Handle: onClick for upload button\r\n */\r\n handleUploadClick() {\r\n const inputFileRef: HTMLInputElement | null = document.querySelector(\r\n \".feedback-screenshot input[type='file']\"\r\n );\r\n if (inputFileRef) {\r\n inputFileRef.click();\r\n }\r\n }\r\n\r\n handleSubmit() {\r\n if (!this.state.form.comment) {\r\n return;\r\n }\r\n\r\n const dto = new FeedbackDTO(\r\n this.state.form.comment,\r\n this.state.form.screenshot\r\n );\r\n\r\n this.props.onSubmit(dto).then((result) => {\r\n if (result) {\r\n this.setState({\r\n form: {\r\n comment: \"\",\r\n screenshot: null,\r\n },\r\n });\r\n this.props.onClose();\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n {this.formService.checkIfValue(RichText.render(this.t(\"ui_feedback_header\", { returnObjects: true })), \"ui_feedback_header\")}\r\n \r\n
\r\n
\r\n {this.formService.checkIfValue(RichText.render(this.t(\"ui_feedback_content\", { returnObjects: true })), \"ui_feedback_content\")}

\r\n
\r\n \r\n this.handleFormChange(\"comment\", e.target.value)}\r\n required\r\n />\r\n
\r\n
\r\n \r\n
\r\n {this.state.form.screenshot\r\n ? this.state.form.screenshot.name\r\n : this.formService.t(this.t, \"ui_feedback_form_upload_screenshot_no_image\", false)}\r\n
\r\n this.handleFileChange(e.target.files)}\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormFeedbackModal);\r\n","import { APIService } from '../../shared/services/APIService';\r\nimport { FeedbackDTO } from '../dto/FeedbackDTO';\r\n\r\nexport class FeedbackService extends APIService {\r\n\r\n\r\n submitFeedback(dto: FeedbackDTO) {\r\n const formData = new FormData();\r\n formData.append('comment', dto.comment);\r\n if (dto.screenshot) {\r\n formData.append('screenshot', dto.screenshot);\r\n }\r\n return this.http.post('/feedback', formData);\r\n }\r\n}","export enum QuestionType {\r\n RADIO = 'radio',\r\n RADIO_IMAGE = 'radio_image',\r\n DROPDOWN = 'dropdown',\r\n BOOL = 'bool',\r\n NUMBER = 'number',\r\n LONG_TEXT = 'long_text',\r\n MATRIX = 'matrix',\r\n CHECKBOX = 'checkbox',\r\n MULTIPLE = 'multiple',\r\n TABLE = 'table',\r\n STRING = 'string',\r\n PREVIOUS_QUESTION = 'previous_question',\r\n TEXT_ONLY = 'text_only',\r\n DECISION_TREE = 'decision_tree'\r\n}\r\n","export enum OperatorType {\r\n NOT_EQUAL = 'neq',\r\n EQUAL = 'eq',\r\n GREATER_THAN = 'gt',\r\n GREATER_THAN_OR_EQUAL_TO = 'gte',\r\n LOWER_THAN = 'lt',\r\n LOWER_THAN_OR_EQUAL_TO = 'lte',\r\n IN = 'in',\r\n NOT_IN = 'nin',\r\n AND = 'and',\r\n OR = 'or',\r\n STRICTLY_EQUAL = 'strictly_eq',\r\n STRICTLY_INCLUDED = 'strictly_included',\r\n STRICTLY_INCLUDES = 'strictly_includes'\r\n}\r\n","import { Toast } from \"primereact/toast\";\r\nimport React, { Component } from \"react\";\r\nimport { MessageCircle } from \"react-feather\";\r\nimport { WithTranslation, withTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport FormFeedbackModal from \"../components/FormFeedbackModal\";\r\nimport { FeedbackDTO } from \"../dto/FeedbackDTO\";\r\nimport { FeedbackService } from \"../services/FeedbackService\";\r\nimport \"./FormFeedback.scss\";\r\nimport { FormService } from '../services/FormService';\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n isOpen: boolean;\r\n}\r\n\r\nclass FormFeedback extends Component {\r\n private toast: Toast | null;\r\n private feedbackService: FeedbackService;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.formService = new FormService();\r\n this.feedbackService = new FeedbackService();\r\n this.toast = null;\r\n\r\n this.state = {\r\n isOpen: false,\r\n };\r\n }\r\n\r\n /**\r\n * Handle: onClick\r\n */\r\n async handleSubmit(dto: FeedbackDTO): Promise {\r\n return this.feedbackService\r\n .submitFeedback(dto)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.props.t, \"ui_feedback_toast_success\", false, false),\r\n });\r\n return true;\r\n })\r\n .catch(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: this.formService.t(this.props.t, \"ui_feedback_toast_error\", false, false),\r\n });\r\n return false;\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n (this.toast = el)}/>\r\n this.setState({ isOpen: !this.state.isOpen })}\r\n >\r\n \r\n \r\n {this.state.isOpen && (\r\n this.handleSubmit(dto)}\r\n onClose={() => this.setState({ isOpen: false })}\r\n />\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormFeedback);\r\n","import { TFunction } from \"i18next\";\r\nimport React from \"react\";\r\nimport { WithTranslation, withTranslation } from \"react-i18next\";\r\nimport { FormQuestion } from \"../models/FormQuestion\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../services/FormService\";\r\nimport \"./FormInputNumber.scss\";\r\n\r\ninterface Props extends WithTranslation {\r\n question: FormQuestion;\r\n value: any;\r\n onValueChange: (v: any) => void;\r\n onBlur: (question: string, v: any) => void;\r\n disabled?: boolean;\r\n parentQuestion?: FormQuestion;\r\n values?: any;\r\n}\r\n\r\nclass FormInputNumber extends React.Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n state = {\r\n showValidationMessage: false,\r\n value: 0,\r\n modified: false\r\n };\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n\r\n this.state = {\r\n showValidationMessage: false,\r\n value: 0,\r\n modified: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ showValidationMessage: false, value: this.resetValueIfInvalid() });\r\n\r\n this.bindOnBlur();\r\n this.bindKeyup();\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly<{}>, snapshot?: any) {\r\n if (this.props.parentQuestion) {\r\n if ((this.props.parentQuestion.question !== prevProps.parentQuestion?.question) && !this.props.value) {\r\n this.bindOnBlur();\r\n this.bindKeyup();\r\n\r\n this.setState({ showValidationMessage: false, value: this.resetValueIfInvalid() });\r\n }\r\n else if ((this.props.parentQuestion.question !== prevProps.parentQuestion?.question) && this.props.value) {\r\n this.bindOnBlur();\r\n this.bindKeyup();\r\n\r\n this.setState({ showValidationMessage: false, value: this.props.value });\r\n }\r\n }\r\n else {\r\n if (this.props.question.question !== prevProps.question.question) {\r\n this.bindOnBlur();\r\n this.bindKeyup();\r\n\r\n this.setState({ showValidationMessage: false, value: this.resetValueIfInvalid(), modified: false });\r\n }\r\n }\r\n }\r\n\r\n resetValueIfInvalid() {\r\n if (this.props.question.validation && Number.isInteger(this.props.question.validation.min) && (this.props.value < this.props.question.validation.min)) {\r\n return null;\r\n }\r\n else {\r\n return this.props.value;\r\n }\r\n }\r\n\r\n onValueChange(v: any) {\r\n this.setState({ ...this.state, value: v });\r\n this.setState({ modified: true });\r\n this.props.onValueChange(v);\r\n }\r\n\r\n private bindOnBlur() {\r\n document.getElementById(this.props.question.question)?.addEventListener('blur', () => {\r\n if (!this.state.showValidationMessage) {\r\n this.setState({ ...this.state, showValidationMessage: true });\r\n }\r\n this.props.onBlur(this.props.question.question, this.state.value);\r\n });\r\n }\r\n\r\n private bindKeyup() {\r\n document.getElementById(this.props.question.question)?.addEventListener('keyup', (e: KeyboardEvent) => {\r\n if (e.key.toLowerCase() === \"enter\") {\r\n this.setState({ ...this.state, showValidationMessage: true });\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n
\r\n {\r\n if (e.target.value.split('-').length > 1) {\r\n this.onValueChange(0)\r\n }\r\n if (!this.state.modified && e.target.value[0] === '0') {\r\n const modif = e.target.value.substring(1);\r\n this.onValueChange(modif)\r\n }\r\n else {\r\n this.onValueChange(e.target.value)\r\n }\r\n } }\r\n onKeyPress={ (event) => {\r\n if (!/[0-9,.-]/.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n } }\r\n\r\n />\r\n
\r\n\r\n { this.props.question.unit && (\r\n
{ RichText.render(this.t(this.props.question.unit, { returnObjects: true })) }
\r\n ) }\r\n
\r\n { this.props.question.validation && this.state.showValidationMessage && Number.isInteger(this.props.question.validation.min) && (this.state.value < this.props.question.validation.min) && (\r\n
\r\n { this.formService.checkIfValue(RichText.render(this.t(\"ui_input_min_value\", { returnObjects: true })), \"ui_input_min_value\") }\r\n { this.props.question.validation.min }\r\n { this.props.question.unit && (\r\n { RichText.render(this.t(this.props.question.unit, { returnObjects: true })) }\r\n ) }\r\n
\r\n ) }\r\n { this.props.question.validation && this.state.showValidationMessage && Number.isInteger(this.props.question.validation.max) && (this.state.value > this.props.question.validation.max) && (\r\n
\r\n { this.formService.checkIfValue(RichText.render(this.t(\"ui_input_max_value\", { returnObjects: true })), \"ui_input_max_value\") }\r\n { this.props.question.validation.max }\r\n { this.props.question.unit && (\r\n { RichText.render(this.t(this.props.question.unit, { returnObjects: true })) }\r\n ) }\r\n
\r\n ) }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormInputNumber);\r\n","import { TFunction } from \"i18next\";\r\nimport React, { Component, ReactNode } from \"react\";\r\nimport { WithTranslation, withTranslation } from \"react-i18next\";\r\nimport \"./FormMatrix.scss\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n currentValue: string;\r\n values: string[];\r\n images: string[];\r\n onValueChange: (v: string) => void;\r\n}\r\n\r\ninterface States {\r\n value: string;\r\n}\r\n\r\nclass FormMatrix extends Component {\r\n private t: TFunction;\r\n private readonly service: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.service = new FormService();\r\n this.t = this.props.t;\r\n\r\n this.state = {\r\n value: this.props.currentValue,\r\n };\r\n }\r\n\r\n /**\r\n * Handle: onClick on matrix-wrapper\r\n */\r\n handleClick(value: string) {\r\n\r\n this.props.onValueChange(value);\r\n\r\n this.setState({\r\n value,\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any) {\r\n if (this.props.currentValue !== this.state.value) {\r\n this.setState({\r\n value: this.props.currentValue\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n let imageList: ReactNode[] = [];\r\n\r\n for (let i = 0; i < this.props.values.length; i++) {\r\n const value = this.props.values[i];\r\n const image = this.props.images[i];\r\n\r\n let className = \"matrix-wrapper p-col-6 p-md-4\";\r\n\r\n if (this.state.value === value) {\r\n className += \" matrix-selected\";\r\n }\r\n\r\n imageList.push(\r\n this.handleClick(value)}\r\n >\r\n \r\n {this.service.checkIfValue(RichText.render(this.t(value, { returnObjects: true })), value)}\r\n \r\n \r\n );\r\n }\r\n return
{imageList}
;\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormMatrix);\r\n","import { TFunction } from \"i18next\";\r\nimport React, { Component, ReactNode } from \"react\";\r\nimport { WithTranslation, withTranslation } from \"react-i18next\";\r\nimport \"./FormRadioImage.scss\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { FormService } from \"../services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n currentValue: string;\r\n values: string[];\r\n images: string[];\r\n onValueChange: (v: string) => void;\r\n}\r\n\r\ninterface States {\r\n value: string;\r\n}\r\n\r\nclass FormRadioImage extends Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = props.t;\r\n this.formService = new FormService();\r\n\r\n this.state = {\r\n value: this.props.currentValue,\r\n };\r\n }\r\n\r\n /**\r\n * Handle: onClick on radio-image-wrapper\r\n */\r\n handleClick(value: string) {\r\n\r\n this.props.onValueChange(value);\r\n\r\n this.setState({\r\n value,\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any) {\r\n if (this.props.currentValue !== this.state.value) {\r\n this.setState({\r\n value: this.props.currentValue\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n let imageList: ReactNode[] = [];\r\n\r\n for (let i = 0; i < this.props.values.length; i++) {\r\n const value = this.props.values[i];\r\n const image = this.props.images[i];\r\n let className = \"radio-image-wrapper\";\r\n\r\n if (this.state.value === value) {\r\n className += \" radio-image-selected\";\r\n }\r\n\r\n imageList.push(\r\n
this.handleClick(value)}>\r\n
\r\n {RichText.asText(this.t(value,\r\n
\r\n {this.formService.checkIfValue(RichText.render(this.t(value, { returnObjects: true })), value)}
\r\n \r\n );\r\n }\r\n\r\n return
{imageList}
;\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormRadioImage);\r\n","import { Radio } from \"@bbri/ui\";\r\nimport { TFunction } from \"i18next\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { FormService } from \"../services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n name: string;\r\n currentValue: any;\r\n values: any[];\r\n onValueChange: (v: any) => void;\r\n}\r\n\r\nclass FormRadioList extends React.Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n }\r\n\r\n render() {\r\n const list: ReactNode[] = [];\r\n const values = this.props.values;\r\n for (let i = 0; i < values.length; i++) {\r\n const value = values[i];\r\n const key = this.props.name + i;\r\n list.push(\r\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\r\n this.props.onValueChange(value)}>\r\n this.props.onValueChange(value)}\r\n />\r\n \r\n );\r\n }\r\n\r\n return list;\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormRadioList);\r\n","import {TFunction} from 'i18next';\r\nimport {QuestionType} from '../enum/QuestionType';\r\nimport {Form} from '../models/Form';\r\nimport {FormQuestion} from '../models/FormQuestion';\r\nimport {OperatorType} from \"./../enum/OperatorType\";\r\nimport {DecisionTreeService} from './../services/DecisionTreeService';\r\nimport {FormService} from \"../services/FormService\";\r\nimport { Submission } from '../../user/models/Submission';\r\n\r\nexport class FormUtils {\r\n\r\n static formatValue(\r\n t: TFunction,\r\n formService: FormService,\r\n form: Form,\r\n history: number[],\r\n values: Record,\r\n callback: (id: number, question: FormQuestion, valueFormatted: string) => void\r\n ) {\r\n for (let i = 0; i < history.length; i++) {\r\n const id = history[i];\r\n const question = form.questions[id];\r\n if(question.type === QuestionType.MULTIPLE && question.subQuestions) {\r\n for(const subQ of question.subQuestions) {\r\n let value = values[subQ.question];\r\n if(value === undefined) {\r\n value = \"\";\r\n } else {\r\n switch (subQ.type) {\r\n case QuestionType.RADIO:\r\n case QuestionType.MATRIX:\r\n case QuestionType.RADIO_IMAGE:\r\n break;\r\n case QuestionType.NUMBER:\r\n value = value + \" \" + formService.t(t, subQ.unit ?? '', false);\r\n break;\r\n case QuestionType.BOOL:\r\n value = value ? formService.t(t, \"oui\", false) : formService.t(t, \"non\", false);\r\n break;\r\n }\r\n }\r\n callback(id, subQ, value);\r\n }\r\n } else {\r\n let value = values[question.question];\r\n if(value === undefined) {\r\n value = \"\";\r\n } else {\r\n switch (question.type) {\r\n case QuestionType.RADIO:\r\n case QuestionType.MATRIX:\r\n case QuestionType.RADIO_IMAGE:\r\n break;\r\n case QuestionType.NUMBER:\r\n value = value + \" \" + formService.t(t, question.unit ?? '', false);\r\n break;\r\n case QuestionType.BOOL:\r\n value = value ? formService.t(t, \"oui\", false) : formService.t(t, \"non\", false);\r\n break;\r\n }\r\n }\r\n\r\n callback(id, question, value);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get the values to send to the back based on the currentQuestion\r\n * @return Record\r\n */\r\n static getValidValues(questions: FormQuestion[], allValues: Record, questionHistory: number[], currentQuestion: number, allowNextQuestion?: boolean) {\r\n const values: Record = {};\r\n const history = [...questionHistory];\r\n\r\n // Add currentQuestion to history if not present\r\n if (!history.includes(currentQuestion)) {\r\n history.push(currentQuestion);\r\n }\r\n\r\n let i = 0;\r\n while (i < history.length) {\r\n const questionId = history[i];\r\n i++;\r\n\r\n // Don't use the question if it's after the current question\r\n if (questionId > currentQuestion && !allowNextQuestion) {\r\n continue;\r\n }\r\n\r\n const question = questions[questionId];\r\n\r\n // Continue if question was not found\r\n if (!question || !question?.question) {\r\n continue;\r\n }\r\n\r\n const value = allValues[question.question];\r\n\r\n // Continue if the value of the question is undefined. Otherwise decision trees might have an issue\r\n if (value === undefined) {\r\n // Check si les sousquestions sont déjà décomposé (cas de l'update)\r\n if (question.type === QuestionType.MULTIPLE) {\r\n if (question.subQuestions) {\r\n values[question.question] = {}\r\n for (let subQuestion of question.subQuestions) {\r\n if (allValues[subQuestion.question]) {\r\n values[subQuestion.question] = allValues[subQuestion.question]\r\n }\r\n }\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n switch (question.type) {\r\n case QuestionType.MULTIPLE:\r\n for (const key in value) {\r\n if (!value.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n values[key] = value[key];\r\n }\r\n break;\r\n default:\r\n values[question.question] = value;\r\n break;\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n\r\n static getSubQuestion(form: Form, submission: Submission) {\r\n let result = {}\r\n for (const question of form.questions) {\r\n if (question.type === QuestionType.MULTIPLE && question.subQuestions) {\r\n for (const subQuestion of question.subQuestions) {\r\n result = {\r\n ...result,\r\n [subQuestion.question]: submission.responses[subQuestion.question]\r\n }\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n\r\n /**\r\n * Check condition for a question\r\n */\r\n static async checkCondition(\r\n decisionTreeService: DecisionTreeService,\r\n leftValue: any,\r\n operator: OperatorType,\r\n rightValue: any,\r\n values: any,\r\n cache: Map\r\n ): Promise {\r\n if (leftValue.question) {\r\n leftValue = values[leftValue.question];\r\n } else if (leftValue.decision_tree) {\r\n\r\n if (cache.has(leftValue.decision_tree)) {\r\n leftValue = cache.get(leftValue.decision_tree);\r\n } else {\r\n const decisionTree = leftValue.decision_tree;\r\n leftValue = await decisionTreeService.computeDecisionTree(\r\n leftValue.decision_tree,\r\n values\r\n );\r\n cache.set(decisionTree, leftValue);\r\n }\r\n }\r\n\r\n switch (operator) {\r\n case OperatorType.EQUAL:\r\n return leftValue === rightValue;\r\n case OperatorType.NOT_EQUAL:\r\n return leftValue !== rightValue;\r\n case OperatorType.AND:\r\n return (\r\n (await FormUtils.checkCondition(\r\n decisionTreeService,\r\n leftValue.lhs,\r\n leftValue.operator,\r\n leftValue.rhs,\r\n values,\r\n cache\r\n )) &&\r\n (await FormUtils.checkCondition(\r\n decisionTreeService,\r\n rightValue.lhs,\r\n rightValue.operator,\r\n rightValue.rhs,\r\n values,\r\n cache\r\n ))\r\n );\r\n case OperatorType.OR:\r\n return (\r\n (await FormUtils.checkCondition(\r\n decisionTreeService,\r\n leftValue.lhs,\r\n leftValue.operator,\r\n leftValue.rhs,\r\n values,\r\n cache\r\n )) ||\r\n (await FormUtils.checkCondition(\r\n decisionTreeService,\r\n rightValue.lhs,\r\n rightValue.operator,\r\n rightValue.rhs,\r\n values,\r\n cache\r\n ))\r\n );\r\n case OperatorType.GREATER_THAN:\r\n return leftValue > rightValue;\r\n case OperatorType.GREATER_THAN_OR_EQUAL_TO:\r\n return leftValue >= rightValue;\r\n case OperatorType.LOWER_THAN:\r\n return leftValue < rightValue;\r\n case OperatorType.LOWER_THAN_OR_EQUAL_TO:\r\n return leftValue <= rightValue;\r\n case OperatorType.IN:\r\n if (Array.isArray(rightValue) && rightValue) {\r\n return (rightValue as any[]).includes(leftValue);\r\n } else if (Array.isArray(leftValue) && leftValue) {\r\n return (leftValue as any[]).includes(rightValue);\r\n } else {\r\n return false;\r\n }\r\n case OperatorType.NOT_IN:\r\n if (Array.isArray(rightValue) && rightValue) {\r\n return !(rightValue as any[]).includes(leftValue);\r\n } else if (Array.isArray(leftValue) && leftValue) {\r\n return !(leftValue as any[]).includes(rightValue);\r\n } else {\r\n return true;\r\n }\r\n case OperatorType.STRICTLY_EQUAL:\r\n if(Array.isArray(leftValue) && leftValue) {\r\n return JSON.stringify(leftValue.sort()) === JSON.stringify(rightValue.sort());\r\n } else {\r\n return false;\r\n }\r\n case OperatorType.STRICTLY_INCLUDED:\r\n if (Array.isArray(leftValue) && leftValue) {\r\n return (leftValue as any[]).every(elem => {\r\n return rightValue.includes(elem)\r\n });\r\n } else {\r\n return false;\r\n }\r\n case OperatorType.STRICTLY_INCLUDES:\r\n if (Array.isArray(leftValue) && leftValue) {\r\n return (rightValue as any[]).every(elem => {\r\n return leftValue.includes(elem)\r\n });\r\n } else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n}\r\n","import jsPDF from 'jspdf';\r\n\r\nexport class JsPDFUtils {\r\n static initJsPDF() {\r\n const callAddRobotoRegularNormalFont = function (this: any) {\r\n const font = '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MDH//wANAAAEHAYeAiYB0wAAAQYAnj0eABQAsABFWLAILxuxCBw+WbENBPQwMf//AA0AAAQcBeMCJgHTAAABBgBqbR4AFwCwAEVYsAgvG7EIHD5ZsRAC9LAZ0DAxAP//AEcAAAPgBh4CJgHSAAABBwB1ATMAHgAUALAARViwCC8bsQgcPlmxDAb0MDH//wBHAAAD4AXgAiYB0gAAAQcAogEaAB4AFACwAEVYsAcvG7EHHD5ZsREC9DAx//8ARwAAA+AGHgImAdIAAAEGAJ9SHwAUALAARViwBy8bsQccPlmxDwb0MDH//wAcAAAFHQY/AiYAJQAAAAYArgQA////KQAABEYGPwImACkAAAAHAK7+cgAA////NwAABQgGQQImACwAAAAHAK7+gAAC////PQAAAXcGQAImAC0AAAAHAK7+hgAB////5v/sBR0GPwAmADMUAAAHAK7/LwAA////FAAABR8GPwAmAD1kAAAHAK7+XQAA////6QAABN8GPwAmALoUAAAHAK7/MgAA////m//0Aq0GdAImAMMAAAEHAK//Kv/sAB0AsABFWLAMLxuxDBo+WbEYAfSwD9CwGBCwIdAwMQD//wAcAAAFHQWwAgYAJQAA//8AqQAABIgFsAIGACYAAP//AKkAAARGBbACBgApAAD//wBWAAAEegWwAgYAPgAA//8AqQAABQgFsAIGACwAAP//ALcAAAF3BbACBgAtAAD//wCpAAAFBQWwAgYALwAA//8AqQAABlIFsAIGADEAAP//AKkAAAUIBbACBgAyAAD//wB2/+wFCQXEAgYAMwAA//8AqQAABMAFsAIGADQAAP//ADEAAASXBbACBgA4AAD//wAPAAAEuwWwAgYAPQAA//8AOQAABM4FsAIGADwAAP///9UAAAJeBwcCJgAtAAABBwBq/3ABQgAXALAARViwAi8bsQIePlmxCwT0sBTQMDEA//8ADwAABLsG+wImAD0AAAEHAGoAwgE2ABcAsABFWLAILxuxCB4+WbEQBPSwGdAwMQD//wBk/+sEdwY6AiYAuwAAAQcArgF1//sAFACwAEVYsBMvG7ETGj5ZsSQB9DAx//8AY//sA+wGOQImAL8AAAEHAK4BK//6ABQAsABFWLAVLxuxFRo+WbEoAfQwMf//AJH+YQPwBjoCJgDBAAABBwCuAUb/+wAUALAARViwAy8bsQMaPlmxFQH0MDH//wDD//QCSwYlAiYAwwAAAQYArirmABQAsABFWLAMLxuxDBo+WbEPAfQwMf//AI//7AP2BnQCJgDLAAABBgCvIewAHQCwAEVYsAAvG7EAGj5ZsR0B9LAV0LAdELAn0DAxAP//AJoAAAQ/BDoCBgCOAAD//wBb/+wENAROAgYAUwAA//8Amv5gA+4EOgIGAHYAAP//ACEAAAO6BDoCBgBaAAAAAQBa/kwEdARJABsAbgCwAEVYsAQvG7EEGj5ZsABFWLAALxuxABo+WbAARViwEy8bsRMUPlmwAEVYsA4vG7EOFD5ZsgMEExESObISEwQREjmyBgMSERI5sQkBsAorWCHYG/RZshUSAxESObAAELEYAbAKK1gh2Bv0WTAxEzIXExMzARMWFzM3BwYjIiYnAwEjAQMmIwcnNsKuWJX/u/6g2j1EGkgvGCVbeD6i/ufEAYOoSWtEAUQEScD+rQIE/S/+DoADBZ4PXoYBcv2/AxABg7cFlA8A////5f/0Am4FsQImAMMAAAEGAGqA7AAXALAARViwDC8bsQwaPlmxFAH0sB3QMDEA//8Aj//sA/YFsQImAMsAAAEGAGp37AAXALAARViwAC8bsQAaPlmxGgH0sCPQMDEA//8AW//sBDQGOgImAFMAAAEHAK4BQ//7ABQAsABFWLAELxuxBBo+WbEeAfQwMf//AI//7AP2BiUCJgDLAAABBwCuASL/5gAUALAARViwAC8bsQAaPlmxFQH0MDH//wB6/+wGGQYiAiYAzgAAAQcArgJT/+MAFACwAEVYsAAvG7EAGj5ZsSYB9DAx//8AqQAABEYHBwImACkAAAEHAGoAxAFCABcAsABFWLAGLxuxBh4+WbETBPSwHNAwMQD//wCxAAAEMAdCAiYAsQAAAQcAdQGQAUIAFACwAEVYsAQvG7EEHj5ZsQgI9DAxAAEAUP/sBHIFxAAmAGSyACcoERI5ALAARViwBi8bsQYePlmwAEVYsBovG7EaEj5ZsAYQsAvQsAYQsQ4BsAorWCHYG/RZsiYaBhESObAmELEUAbAKK1gh2Bv0WbAaELAf0LAaELEiAbAKK1gh2Bv0WTAxASYmNTQkMzIWFhUjNCYjIgYVFBYEFhYVFAQjIiQmNTMUFjMyNjQmAlb34QET3JbrgcGomY6flwFrzWP+7OeW/vyNwcOjmKKWAolHz5is4XTMeYSXfW9Ze2Z7pG+x1XPIf4SZfNZ1//8AtwAAAXcFsAIGAC0AAP///9UAAAJeBwcCJgAtAAABBwBq/3ABQgAXALAARViwAi8bsQIePlmxCwT0sBTQMDEA//8ANf/sA8wFsAIGAC4AAP//ALIAAAUdBbACBgIsAAD//wCpAAAFBQcwAiYALwAAAQcAdQF7ATAAFACwAEVYsAUvG7EFHj5ZsQ4I9DAx//8ATf/rBMsHGgImAN4AAAEHAKEA2gFDABMAsABFWLARLxuxER4+WbAV3DAxAP//ABwAAAUdBbACBgAlAAD//wCpAAAEiAWwAgYAJgAA//8AsQAABDAFsAIGALEAAP//AKkAAARGBbACBgApAAD//wCxAAAE/wcaAiYA3AAAAQcAoQExAUMAEwCwAEVYsAgvG7EIHj5ZsA3cMDEA//8AqQAABlIFsAIGADEAAP//AKkAAAUIBbACBgAsAAD//wB2/+wFCQXEAgYAMwAA//8AsgAABQEFsAIGALYAAP//AKkAAATABbACBgA0AAD//wB3/+wE2AXEAgYAJwAA//8AMQAABJcFsAIGADgAAP//ADkAAATOBbACBgA8AAD//wBt/+wD6gROAgYARQAA//8AXf/sA/METgIGAEkAAP//AJwAAAQBBcQCJgDwAAABBwChAKL/7QATALAARViwCC8bsQgaPlmwDdwwMQD//wBb/+wENAROAgYAUwAA//8AjP5gBB4ETgIGAFQAAAABAFz/7APsBE4AHQBLshAeHxESOQCwAEVYsBAvG7EQGj5ZsABFWLAILxuxCBI+WbEAAbAKK1gh2Bv0WbAIELAD0LAQELAU0LAQELEXAbAKK1gh2Bv0WTAxJTI2NzMOAiMiABE1NDY2MzIWFyMmJiMiBhUVFBYCPmOUCK8FdsVu3f77dNmUtvEIrwiPaY2bmoN4Wl2oZAEnAQAfnvaI2q5ph8vAI7vKAP//ABb+SwOwBDoCBgBdAAD//wApAAADygQ6AgYAXAAA//8AXf/sA/MFxQImAEkAAAEHAGoAjgAAABcAsABFWLAILxuxCBo+WbElAfSwLtAwMQD//wCaAAADRwXsAiYA7AAAAQcAdQDN/+wAFACwAEVYsAQvG7EEGj5ZsQgJ9DAx//8AX//sA7sETgIGAFcAAP//AI0AAAFoBcQCBgBNAAD///+7AAACRAXEAiYAjQAAAQcAav9W//8AFwCwAEVYsAIvG7ECGj5ZsQsB9LAU0DAxAP///7/+SwFZBcQCBgBOAAD//wCcAAAEPwXrAiYA8QAAAQcAdQE7/+sAFACwAEVYsAQvG7EEGj5ZsQ8J9DAx//8AFv5LA7AF2AImAF0AAAEGAKFQAQATALAARViwDy8bsQ8aPlmwE9wwMQD//wA9AAAG7Qc2AiYAOwAAAQcARAIsATYAFACwAEVYsAMvG7EDHj5ZsRQI9DAx//8AKwAABdMGAAImAFsAAAEHAEQBiwAAABQAsABFWLALLxuxCxo+WbEOCfQwMf//AD0AAAbtBzYCJgA7AAABBwB1ArsBNgAUALAARViwBC8bsQQePlmxFQj0MDH//wArAAAF0wYAAiYAWwAAAQcAdQIaAAAAFACwAEVYsAwvG7EMGj5ZsQ8J9DAx//8APQAABu0G+wImADsAAAEHAGoB9QE2ABcAsABFWLADLxuxAx4+WbEaBPSwI9AwMQD//wArAAAF0wXFAiYAWwAAAQcAagFUAAAAFwCwAEVYsAsvG7ELGj5ZsRQB9LAd0DAxAP//AA8AAAS7BzYCJgA9AAABBwBEAPkBNgAUALAARViwCC8bsQgePlmxCgj0MDH//wAW/ksDsAYAAiYAXQAAAQcARACMAAAAFACwAEVYsA8vG7EPGj5ZsREJ9DAx//8AZwQhAP0GAAIGAAsAAP//AIgEEgIjBgACBgAGAAD//wCg//UDigWwACYABQAAAAcABQIPAAD///+0/ksCPwXYAiYAnAAAAQcAn/9I/9kAFACwAEVYsA0vG7ENGj5ZsRMB9DAx//8AMAQWAUcGAAIGAYUAAP//AKkAAAZSBzYCJgAxAAABBwB1ApkBNgAUALAARViwAi8bsQIePlmxEQj0MDH//wCLAAAGeAYAAiYAUQAAAQcAdQKtAAAAFACwAEVYsAMvG7EDGj5ZsSAJ9DAx//8AHP5rBR0FsAImACUAAAAHAKcBfwAA//8Abf5rA+oETgImAEUAAAAHAKcAxwAA//8AqQAABEYHQgImACkAAAEHAEQA+wFCABQAsABFWLAGLxuxBh4+WbENCPQwMf//ALEAAAT/B0ICJgDcAAABBwBEAW0BQgAUALAARViwCC8bsQgePlmxCwj0MDH//wBd/+wD8wYAAiYASQAAAQcARADFAAAAFACwAEVYsAgvG7EIGj5ZsR8J9DAx//8AnAAABAEF7AImAPAAAAEHAEQA3v/sABQAsABFWLAILxuxCBo+WbELCfQwMf//AFoAAAUhBbACBgC5AAD//wBf/igFQwQ6AgYAzQAA//8AFgAABN0G6AImARkAAAEHAKwEOQD6ABcAsABFWLAPLxuxDx4+WbERCPSwFdAwMQD////7AAAECwXBAiYBGgAAAQcArAPU/9MAFwCwAEVYsBEvG7ERGj5ZsRMJ9LAX0DAxAP//AFv+SwhABE4AJgBTAAAABwBdBJAAAP//AHb+SwkwBcQAJgAzAAAABwBdBYAAAP//AFD+UQRqBcQCJgDbAAAABwJRAZz/uP//AFj+UgOsBE0CJgDvAAAABwJRAUP/uf//AHf+UQTYBcQCJgAnAAAABwJRAeX/uP//AFz+UQPsBE4CJgBHAAAABwJRAVL/uP//AA8AAAS7BbACBgA9AAD//wAu/mAD3wQ6AgYAvQAA//8AtwAAAXcFsAIGAC0AAP//ABsAAAc1BxoCJgDaAAABBwChAfgBQwATALAARViwDS8bsQ0ePlmwGdwwMQD//wAVAAAGBAXEAiYA7gAAAQcAoQFf/+0AEwCwAEVYsA0vG7ENGj5ZsBncMDEA//8AtwAAAXcFsAIGAC0AAP//ABwAAAUdBw4CJgAlAAABBwChAPQBNwATALAARViwBC8bsQQePlmwDtwwMQD//wBt/+wD6gXYAiYARQAAAQcAoQCZAAEAEwCwAEVYsBcvG7EXGj5ZsCzcMDEA//8AHAAABR0G+wImACUAAAEHAGoA+QE2ABcAsABFWLAELxuxBB4+WbESBPSwG9AwMQD//wBt/+wD6gXFAiYARQAAAQcAagCeAAAAFwCwAEVYsBcvG7EXGj5ZsTAB9LA50DAxAP////IAAAdXBbACBgCBAAD//wBO/+wGfAROAgYAhgAA//8AqQAABEYHGgImACkAAAEHAKEAvwFDABMAsABFWLAGLxuxBh4+WbAP3DAxAP//AF3/7APzBdgCJgBJAAABBwChAIkAAQATALAARViwCC8bsQgaPlmwIdwwMQD//wBd/+wFEgbZAiYBWAAAAQcAagDTARQAFwCwAEVYsAAvG7EAHj5ZsScE9LAw0DAxAP//AGL/7APpBE8CBgCdAAD//wBi/+wD6QXGAiYAnQAAAQcAagCHAAEAFwCwAEVYsAAvG7EAGj5ZsSQB9LAt0DAxAP//ABsAAAc1BwcCJgDaAAABBwBqAf0BQgAXALAARViwDS8bsQ0ePlmxHQT0sCbQMDEA//8AFQAABgQFsQImAO4AAAEHAGoBZP/sABcAsABFWLANLxuxDRo+WbEdAfSwJtAwMQD//wBQ/+wEagccAiYA2wAAAQcAagC3AVcAFwCwAEVYsAsvG7ELHj5ZsTAE9LA50DAxAP//AFj/7QOsBcUCJgDvAAABBgBqXgAAFwCwAEVYsAovG7EKGj5ZsS4B9LA30DAxAP//ALEAAAT/Bu8CJgDcAAABBwBwAQQBSgATALAARViwCC8bsQgePlmwC9wwMQD//wCcAAAEAQWZAiYA8AAAAQYAcHX0ABMAsABFWLAHLxuxBxo+WbAL3DAxAP//ALEAAAT/BwcCJgDcAAABBwBqATYBQgAXALAARViwCC8bsQgePlmxEQT0sBrQMDEA//8AnAAABAEFsQImAPAAAAEHAGoAp//sABcAsABFWLAILxuxCBo+WbERAfSwGtAwMQD//wB2/+wFCQb9AiYAMwAAAQcAagEbATgAFwCwAEVYsA0vG7ENHj5ZsScE9LAw0DAxAP//AFv/7AQ0BcUCJgBTAAABBwBqAJgAAAAXALAARViwBC8bsQQaPlmxIwH0sCzQMDEA//8AZ//sBPoFxAIGARcAAP//AFv/7AQ0BE4CBgEYAAD//wBn/+wE+gcCAiYBFwAAAQcAagEnAT0AFwCwAEVYsA0vG7ENHj5ZsScE9LAw0DAxAP//AFv/7AQ0BccCJgEYAAABBwBqAIgAAgAXALAARViwBC8bsQQaPlmxJAH0sC3QMDEA//8Ak//sBPQHHQImAOcAAAEHAGoBDQFYABcAsABFWLATLxuxEx4+WbEnBPSwMNAwMQD//wBk/+wD4AXFAiYA/wAAAQYAanwAABcAsABFWLAILxuxCBo+WbEnAfSwMNAwMQD//wBN/+sEywbvAiYA3gAAAQcAcACtAUoAEwCwAEVYsBEvG7ERHj5ZsBPcMDEA//8AFv5LA7AFrQImAF0AAAEGAHAjCAATALAARViwDi8bsQ4aPlmwEdwwMQD//wBN/+sEywcHAiYA3gAAAQcAagDfAUIAFwCwAEVYsBEvG7ERHj5ZsRkE9LAi0DAxAP//ABb+SwOwBcUCJgBdAAABBgBqVQAAFwCwAEVYsA8vG7EPGj5ZsRcB9LAg0DAxAP//AE3/6wTLB0ECJgDeAAABBwCmAS8BQgAXALAARViwAS8bsQEePlmxFAj0sBjQMDEA//8AFv5LA9EF/wImAF0AAAEHAKYApQAAABcAsABFWLAPLxuxDxo+WbEWCfSwEtAwMQD//wCWAAAEyAcHAiYA4QAAAQcAagEJAUIAFwCwAEVYsAsvG7ELHj5ZsRoE9LAj0DAxAP//AGcAAAO9BbECJgD5AAABBgBqZOwAFwCwAEVYsAkvG7EJGj5ZsRgB9LAh0DAxAP//ALIAAAYwBwcAJgDmDwAAJwAtBLkAAAEHAGoB0wFCABcAsABFWLAKLxuxCh4+WbEfBPSwKNAwMQD//wCdAAAFfwWxACYA/gAAACcAjQQqAAABBwBqAW3/7AAXALAARViwCi8bsQoaPlmxHwH0sCjQMDEA//8AX//sA/AGAAIGAEgAAP//ABz+ogUdBbACJgAlAAAABwCtBQIAAP//AG3+ogPqBE4CJgBFAAAABwCtBEoAAP//ABwAAAUdB7oCJgAlAAABBwCrBO4BRgAUALAARViwBC8bsQQePlmxCwj0MDH//wBt/+wD6gaEAiYARQAAAQcAqwSTABAAFACwAEVYsBcvG7EXGj5ZsSkB9DAx//8AHAAABR0HwwImACUAAAEHAjcAwwEuABcAsABFWLAFLxuxBR4+WbEODPSwFNAwMQD//wBt/+wEwAaOAiYARQAAAQYCN2j5ABcAsABFWLAXLxuxFxo+WbEsCPSwMtAwMQD//wAcAAAFHQe/AiYAJQAAAQcCOADHAT0AFwCwAEVYsAQvG7EEHj5ZsQ4M9LAT0DAxAP///8r/7APqBokCJgBFAAABBgI4bAcAFwCwAEVYsBcvG7EXGj5ZsSwI9LAx0DAxAP//ABwAAAUdB+oCJgAlAAABBwI5AMgBGwAXALAARViwBS8bsQUePlmxDAz0sCDQMDEA//8Abf/sBFkGtQImAEUAAAEGAjlt5gAXALAARViwFy8bsRcaPlmxKgj0sDDQMDEA//8AHAAABR0H2gImACUAAAEHAjoAxwEGABcAsABFWLAFLxuxBR4+WbEMDPSwFdAwMQD//wBt/+wD6galAiYARQAAAQYCOmzRABcAsABFWLAXLxuxFxo+WbEqCPSwM9AwMQD//wAc/qIFHQc2AiYAJQAAACcAngDJATYBBwCtBQIAAAAUALAARViwBC8bsQQePlmxDwb0MDH//wBt/qID6gYAAiYARQAAACYAnm4AAQcArQRKAAAAFACwAEVYsBcvG7EXGj5ZsS0B9DAx//8AHAAABR0HtwImACUAAAEHAjwA6gEtABcAsABFWLAELxuxBB4+WbEOB/SwG9AwMQD//wBt/+wD6gaCAiYARQAAAQcCPACP//gAFwCwAEVYsBcvG7EXGj5ZsSwE9LA50DAxAP//ABwAAAUdB7cCJgAlAAABBwI1AOoBLQAXALAARViwBC8bsQQePlmxDgf0sBzQMDEA//8Abf/sA+oGggImAEUAAAEHAjUAj//4ABcAsABFWLAXLxuxFxo+WbEsBPSwOtAwMQD//wAcAAAFHQhAAiYAJQAAAQcCPQDuAT0AFwCwAEVYsAQvG7EEHj5ZsQ4H9LAn0DAxAP//AG3/7APqBwoCJgBFAAABBwI9AJMABwAXALAARViwFy8bsRcaPlmxLAT0sEXQMDEA//8AHAAABR0IFQImACUAAAEHAlAA7gFFABcAsABFWLAELxuxBB4+WbEOB/SwHNAwMQD//wBt/+wD6gbfAiYARQAAAQcCUACTAA8AFwCwAEVYsBcvG7EXGj5ZsSwE9LA60DAxAP//ABz+ogUdBw4CJgAlAAAAJwChAPQBNwEHAK0FAgAAABMAsABFWLAELxuxBB4+WbAO3DAxAP//AG3+ogPqBdgCJgBFAAAAJwChAJkAAQEHAK0ESgAAABMAsABFWLAXLxuxFxo+WbAs3DAxAP//AKn+rARGBbACJgApAAAABwCtBMAACv//AF3+ogPzBE4CJgBJAAAABwCtBIwAAP//AKkAAARGB8YCJgApAAABBwCrBLkBUgAUALAARViwBi8bsQYePlmxDAj0MDH//wBd/+wD8waEAiYASQAAAQcAqwSDABAAFACwAEVYsAgvG7EIGj5ZsR4B9DAx//8AqQAABEYHLgImACkAAAEHAKUAkAFGABQAsABFWLAGLxuxBh4+WbEPBPQwMf//AF3/7APzBewCJgBJAAABBgClWgQAFACwAEVYsAgvG7EIGj5ZsSEB9DAx//8AqQAABOYHzwImACkAAAEHAjcAjgE6ABcAsABFWLAHLxuxBx4+WbEPDPSwFdAwMQD//wBd/+wEsAaOAiYASQAAAQYCN1j5ABcAsABFWLAILxuxCBo+WbEhCPSwJ9AwMQD////wAAAERgfLAiYAKQAAAQcCOACSAUkAFwCwAEVYsAYvG7EGHj5ZsQ8M9LAU0DAxAP///7r/7APzBokCJgBJAAABBgI4XAcAFwCwAEVYsAgvG7EIGj5ZsSEI9LAm0DAxAP//AKkAAAR/B/YCJgApAAABBwI5AJMBJwAXALAARViwBi8bsQYePlmxDwz0sBPQMDEA//8AXf/sBEkGtQImAEkAAAEGAjld5gAXALAARViwCC8bsQgaPlmxHwj0sCXQMDEA//8AqQAABEYH5gImACkAAAEHAjoAkgESABcAsABFWLAGLxuxBh4+WbEPDPSwFtAwMQD//wBd/+wD8walAiYASQAAAQYCOlzRABcAsABFWLAILxuxCBo+WbEhCPSwKNAwMQD//wCp/qwERgdCAiYAKQAAACcAngCUAUIBBwCtBMAACgAUALAARViwBi8bsQYePlmxEAb0MDH//wBd/qID8wYAAiYASQAAACYAnl4AAQcArQSMAAAAFACwAEVYsAgvG7EIGj5ZsSAB9DAx//8AtwAAAfgHxgImAC0AAAEHAKsDZAFSABQAsABFWLACLxuxAh4+WbEECPQwMf//AJsAAAHeBoICJgCNAAABBwCrA0oADgAUALAARViwAi8bsQIaPlmxBAH0MDH//wCj/qsBfgWwAiYALQAAAAcArQNrAAn//wCF/qwBaAXEAiYATQAAAAcArQNNAAr//wB2/qIFCQXEAiYAMwAAAAcArQUYAAD//wBb/qIENAROAiYAUwAAAAcArQSdAAD//wB2/+wFCQe8AiYAMwAAAQcAqwUQAUgAFACwAEVYsA0vG7ENHj5ZsS4I9DAx//8AW//sBDQGhAImAFMAAAEHAKsEjQAQABQAsABFWLAELxuxBBo+WbEqAfQwMf//AHb/7AU9B8UCJgAzAAABBwI3AOUBMAAXALAARViwDS8bsQ0ePlmxIwz0sCnQMDEA//8AW//sBLoGjgImAFMAAAEGAjdi+QAXALAARViwBC8bsQQaPlmxHwj0sCXQMDEA//8AR//sBQkHwQImADMAAAEHAjgA6QE/ABcAsABFWLANLxuxDR4+WbEhDPSwKNAwMQD////E/+wENAaJAiYAUwAAAQYCOGYHABcAsABFWLAELxuxBBo+WbEdCPSwJNAwMQD//wB2/+wFCQfsAiYAMwAAAQcCOQDqAR0AFwCwAEVYsA0vG7ENHj5ZsSEM9LAn0DAxAP//AFv/7ARTBrUCJgBTAAABBgI5Z+YAFwCwAEVYsAQvG7EEGj5ZsR0I9LAj0DAxAP//AHb/7AUJB9wCJgAzAAABBwI6AOkBCAAXALAARViwDS8bsQ0ePlmxIQz0sCrQMDEA//8AW//sBDQGpQImAFMAAAEGAjpm0QAXALAARViwBC8bsQQaPlmxHQj0sCbQMDEA//8Adv6iBQkHOAImADMAAAAnAJ4A6wE4AQcArQUYAAAAFACwAEVYsA0vG7ENHj5ZsSIG9DAx//8AW/6iBDQGAAImAFMAAAAmAJ5oAAEHAK0EnQAAABQAsABFWLAELxuxBBo+WbEeAfQwMf//AGX/7AWdBzECJgCYAAABBwB1Ad0BMQAUALAARViwDS8bsQ0ePlmxKAj0MDH//wBb/+wEugYAAiYAmQAAAQcAdQFlAAAAFACwAEVYsAQvG7EEGj5ZsSYJ9DAx//8AZf/sBZ0HMQImAJgAAAEHAEQBTgExABQAsABFWLANLxuxDR4+WbEnCPQwMf//AFv/7AS6BgACJgCZAAABBwBEANYAAAAUALAARViwBC8bsQQaPlmxJQn0MDH//wBl/+wFnQe1AiYAmAAAAQcAqwUMAUEAFACwAEVYsA0vG7ENHj5ZsTQI9DAx//8AW//sBLoGhAImAJkAAAEHAKsElAAQABQAsABFWLAELxuxBBo+WbEyAfQwMf//AGX/7AWdBx0CJgCYAAABBwClAOMBNQAUALAARViwDS8bsQ0ePlmxKQT0MDH//wBb/+wEugXsAiYAmQAAAQYApWsEABQAsABFWLAELxuxBBo+WbEnAfQwMf//AGX+ogWdBjcCJgCYAAAABwCtBQkAAP//AFv+mQS6BLACJgCZAAAABwCtBJv/9///AIz+ogSqBbACJgA5AAAABwCtBO4AAP//AIj+ogPcBDoCJgBZAAAABwCtBFEAAP//AIz/7ASqB7oCJgA5AAABBwCrBOkBRgAUALAARViwCi8bsQoePlmxEwj0MDH//wCI/+wD3AaEAiYAWQAAAQcAqwSFABAAFACwAEVYsAcvG7EHGj5ZsREB9DAx//8AjP/sBh0HQgImAJoAAAEHAHUB1AFCABQAsABFWLAaLxuxGh4+WbEdCPQwMf//AIj/7AUPBewCJgCbAAABBwB1AWP/7AAUALAARViwEy8bsRMaPlmxHAn0MDH//wCM/+wGHQdCAiYAmgAAAQcARAFFAUIAFACwAEVYsBIvG7ESHj5ZsRwI9DAx//8AiP/sBQ8F7AImAJsAAAEHAEQA1P/sABQAsABFWLANLxuxDRo+WbEbCfQwMf//AIz/7AYdB8YCJgCaAAABBwCrBQMBUgAUALAARViwGi8bsRoePlmxKQj0MDH//wCI/+wFDwZwAiYAmwAAAQcAqwSS//wAFACwAEVYsBMvG7ETGj5ZsSgB9DAx//8AjP/sBh0HLgImAJoAAAEHAKUA2gFGABQAsABFWLASLxuxEh4+WbEeBPQwMf//AIj/7AUPBdgCJgCbAAABBgClafAAFACwAEVYsBMvG7ETGj5ZsR0B9DAx//8AjP6aBh0GAgImAJoAAAAHAK0FCf/4//8AiP6iBQ8EkAImAJsAAAAHAK0EhwAA//8AD/6iBLsFsAImAD0AAAAHAK0EuwAA//8AFv4FA7AEOgImAF0AAAAHAK0FHP9j//8ADwAABLsHugImAD0AAAEHAKsEtwFGABQAsABFWLAILxuxCB4+WbEJCPQwMf//ABb+SwOwBoQCJgBdAAABBwCrBEoAEAAUALAARViwDy8bsQ8aPlmxEAH0MDH//wAPAAAEuwciAiYAPQAAAQcApQCOAToAFACwAEVYsAEvG7EBHj5ZsQwE9DAx//8AFv5LA7AF7AImAF0AAAEGAKUhBAAUALAARViwAS8bsQEaPlmxEwH0MDH//wBf/s0ErAYAACYASAAAACcCJgGhAkcBBwBDAJ//ZAAIALIvHgFdMDH//wAx/pkElwWwAiYAOAAAAAcCUQI/AAD//wAo/pkDsAQ6AiYA9gAAAAcCUQHGAAD//wCW/pkEyAWwAiYA4QAAAAcCUQL+AAD//wBn/pkDvQQ7AiYA+QAAAAcCUQH1AAD//wCx/pkEMAWwAiYAsQAAAAcCUQDvAAD//wCa/pkDRwQ6AiYA7AAAAAcCUQDVAAD//wA//lUFvQXDAiYBTAAAAAcCUQMG/7z////e/lkEYwROAiYBTQAAAAcCUQIB/8D//wCMAAAD3wYAAgYATAAAAAL/1AAABLEFsAASABsAZACwAEVYsA8vG7EPHj5ZsABFWLAKLxuxChI+WbICCg8REjmwAi+yDg8CERI5sA4vsQsBsAorWCHYG/RZsAHQsA4QsBHQsAIQsRMBsAorWCHYG/RZsAoQsRQBsAorWCHYG/RZMDEBIxUhFgQVFAQHIREjNTM1MxUzAxEhMjY1NCYnAlDtAWrkAQD+/t/908/PwO3tAV+Pn5mNBFDyA+TExeoEBFCXycn92f3dmIB7jgIAAAL/1AAABLEFsAASABsAZACwAEVYsBAvG7EQHj5ZsABFWLAKLxuxChI+WbICChAREjmwAi+yEQIQERI5sBEvsQEBsAorWCHYG/RZsAvQsBEQsA7QsAIQsRMBsAorWCHYG/RZsAoQsRQBsAorWCHYG/RZMDEBIxUhFgQVFAQHIREjNTM1MxUzAxEhMjY1NCYnAlDtAWrkAQD+/t/908/PwO3tAV+Pn5mNBFDyA+TExeoEBFCXycn92f3dmIB7jgIAAAEAAwAABDAFsAANAFAAsABFWLAILxuxCB4+WbAARViwAi8bsQISPlmyDQgCERI5sA0vsnoNAV2xAAGwCitYIdgb9FmwBNCwDRCwBtCwCBCxCgGwCitYIdgb9FkwMQEhESMRIzUzESEVIREhAn/+88GurgN//UIBDQKs/VQCrJcCbZ7+MQAAAf/8AAADRwQ6AA0ASwCwAEVYsAgvG7EIGj5ZsABFWLACLxuxAhI+WbINCAIREjmwDS+xAAGwCitYIdgb9FmwBNCwDRCwBtCwCBCxCgGwCitYIdgb9FkwMQEhESMRIzUzESEVIREhAnj+3LqengKt/g0BJAHf/iEB35cBxJn+1QAB//cAAAUxBbAAFACAALAARViwCC8bsQgePlmwAEVYsBAvG7EQHj5ZsABFWLACLxuxAhI+WbAARViwEy8bsRMSPlmyDggCERI5sA4vsi8OAV2yzw4BXbEBAbAKK1gh2Bv0WbIHCAIREjmwBy+xBAGwCitYIdgb9FmwBxCwCtCwBBCwDNCyEgEOERI5MDEBIxEjESM1MzUzFTMVIxEzATMBASMCN7HAz8/A7e2WAf3v/dQCVesCjv1yBDeX4uKX/vcCgv0+/RIAAAH/vwAABCgGAAAUAHYAsABFWLAILxuxCCA+WbAARViwEC8bsRAaPlmwAEVYsAIvG7ECEj5ZsABFWLATLxuxExI+WbIOEAIREjmwDi+xAQGwCitYIdgb9FmyBwgQERI5sAcvsQQBsAorWCHYG/RZsAcQsArQsAQQsAzQshIBDhESOTAxASMRIxEjNTM1MxUzFSMRMwEzAQEjAeCAuufnutvbfgE72/6GAa7bAfX+CwTBl6iol/3NAaz+E/2zAAABAA8AAAS7BbAADgBXsgoPEBESOQCwAEVYsAgvG7EIHj5ZsABFWLALLxuxCx4+WbAARViwAi8bsQISPlmyBggCERI5sAYvsQUBsAorWCHYG/RZsADQsgoIAhESObAGELAO0DAxASMRIxEjNTMBMwEBMwEzA6bhwNuU/lHcAXoBfNr+UZoCCf33AgmXAxD9JQLb/PAAAQAu/mAD3wQ6AA4AZLIKDxAREjkAsABFWLAILxuxCBo+WbAARViwCy8bsQsaPlmwAEVYsAIvG7ECFD5ZsABFWLAALxuxABI+WbAARViwBC8bsQQSPlmxBgGwCitYIdgb9FmyCgsAERI5sA3QsA7QMDEFIxEjESM1MwEzAQEzATMDSua63L/+ob0BHwEYvf6jyAv+awGVlwOu/NoDJvxSAAEAOQAABM4FsAARAGQAsABFWLALLxuxCx4+WbAARViwDi8bsQ4ePlmwAEVYsAIvG7ECEj5ZsABFWLAFLxuxBRI+WbIRCwIREjmwES+xAAGwCitYIdgb9FmyBAsCERI5sAfQsBEQsAnQsg0LAhESOTAxASMBIwEBIwEjNTMBMwEBMwEzA8SkAa7k/pr+mOMBr6CR/mvhAV8BXeL+a5YCnv1iAjj9yAKelwJ7/dICLv2FAAABACkAAAPKBDoAEQBkALAARViwCy8bsQsaPlmwAEVYsA4vG7EOGj5ZsABFWLACLxuxAhI+WbAARViwBS8bsQUSPlmyEQ4CERI5sBEvsQABsAorWCHYG/RZsgQOAhESObAH0LARELAJ0LINDgIREjkwMQEjASMDAyMBIzUzATMTEzMBMwM8swFB1vr61wFBqp7+1tbt8Nj+1qcB4f4fAZX+awHhlwHC/nUBi/4+AP//AGP/7APsBE0CBgC/AAD//wASAAAELwWwAiYAKgAAAAcCJv+D/n///wCRAosFyQMiAEYBr4QAZmZAAP//AF0AAAQzBcQCBgAWAAD//wBe/+wD+QXEAgYAFwAA//8ANQAABFAFsAIGABgAAP//AJr/7AQtBbACBgAZAAD//wCY/+wEMAWxAAYAGhQA//8AhP/sBCIFxAAGABwUAP//AGT//wP4BcQABgAdAAD//wCH/+wEHgXEAAYAFBQA//8Aev/sBNwHVwImACsAAAEHAHUBvgFXABQAsABFWLALLxuxCx4+WbEiCPQwMf//AGD+VgPyBgACJgBLAAABBwB1AUsAAAAUALAARViwAy8bsQMaPlmxJwn0MDH//wCpAAAFCAc2AiYAMgAAAQcARAFmATYAFACwAEVYsAYvG7EGHj5ZsQsI9DAx//8AjAAAA98GAAImAFIAAAEHAEQAzAAAABQAsABFWLADLxuxAxo+WbETCfQwMf//ABwAAAUdByACJgAlAAABBwCsBG0BMgAXALAARViwBC8bsQQePlmxDAj0sBDQMDEA//8AOf/sA+oF6wImAEUAAAEHAKwEEv/9ABcAsABFWLAXLxuxFxo+WbEqCfSwLtAwMQD//wBfAAAERgcsAiYAKQAAAQcArAQ4AT4AFwCwAEVYsAYvG7EGHj5ZsQ0I9LAR0DAxAP//ACn/7APzBesCJgBJAAABBwCsBAL//QAXALAARViwCC8bsQgaPlmxHwn0sCPQMDEA////CgAAAeoHLAImAC0AAAEHAKwC4wE+ABcAsABFWLACLxuxAh4+WbEFCPSwCdAwMQD///7wAAAB0AXpAiYAjQAAAQcArALJ//sAFwCwAEVYsAIvG7ECGj5ZsQUJ9LAJ0DAxAP//AHb/7AUJByICJgAzAAABBwCsBI8BNAAXALAARViwDS8bsQ0ePlmxIQj0sCXQMDEA//8AM//sBDQF6wImAFMAAAEHAKwEDP/9ABcAsABFWLAELxuxBBo+WbEdCfSwIdAwMQD//wBVAAAEyQcgAiYANgAAAQcArAQuATIAFwCwAEVYsAQvG7EEHj5ZsRkI9LAd0DAxAP///4sAAAKXBesCJgBWAAABBwCsA2T//QAXALAARViwCy8bsQsaPlmxDwn0sBPQMDEA//8AjP/sBKoHIAImADkAAAEHAKwEaAEyABcAsABFWLAJLxuxCR4+WbEUCPSwGNAwMQD//wAr/+wD3AXrAiYAWQAAAQcArAQE//0AFwCwAEVYsAcvG7EHGj5ZsRIJ9LAW0DAxAP///tYAAATSBj8AJgDQZAAABwCu/h8AAP//AKn+rASIBbACJgAmAAAABwCtBLoACv//AIz+mQQgBgACJgBGAAAABwCtBKv/9///AKn+rATGBbACJgAoAAAABwCtBLkACv//AF/+ogPwBgACJgBIAAAABwCtBL0AAP//AKn+CQTGBbACJgAoAAABBwG6AWX+qgAIALIAGgFdMDH//wBf/f8D8AYAAiYASAAAAAcBugFp/qD//wCp/qwFCAWwAiYALAAAAAcArQUfAAr//wCM/qwD3wYAAiYATAAAAAcArQShAAr//wCpAAAFBQcwAiYALwAAAQcAdQF7ATAAFACwAEVYsAUvG7EFHj5ZsQ4I9DAx//8AjQAABAwHQQImAE8AAAEHAHUBRAFBAAkAsAUvsA/cMDEA//8Aqf77BQUFsAImAC8AAAAHAK0E6ABZ//8Ajf7oBAwGAAImAE8AAAAHAK0EZQBG//8Aqf6sBBwFsAImADAAAAAHAK0EwAAK//8Ahv6sAWEGAAImAFAAAAAHAK0DTgAK//8Aqf6sBlIFsAImADEAAAAHAK0F0gAK//8Ai/6sBngETgImAFEAAAAHAK0F1gAK//8Aqf6sBQgFsAImADIAAAAHAK0FJAAK//8AjP6sA98ETgImAFIAAAAHAK0EhwAK//8Adv/sBQkH5gImADMAAAEHAjYFCwFTACoAsABFWLANLxuxDR4+WbAj3LJ/IwFxsu8jAXGyTyMBcbIvIwFxsDfQMDH//wCpAAAEwAdCAiYANAAAAQcAdQF8AUIAFACwAEVYsAMvG7EDHj5ZsRYI9DAx//8AjP5gBB4F9wImAFQAAAEHAHUBk//3ABQAsABFWLAMLxuxDBo+WbEdCfQwMf//AKj+rATJBbACJgA2AAAABwCtBLcACv//AIL+rAKXBE4CJgBWAAAABwCtA0oACv//AFD+ogRyBcQCJgA3AAAABwCtBMkAAP//AF/+mgO7BE4CJgBXAAAABwCtBIf/+P//ADH+ogSXBbACJgA4AAAABwCtBLoAAP//AAn+ogJWBUACJgBYAAAABwCtBBkAAP//AIz/7ASqB+QCJgA5AAABBwI2BOQBUQAWALAARViwEi8bsRIePlmwFtywKtAwMf//ABwAAAT9By4CJgA6AAABBwClALQBRgAUALAARViwBi8bsQYePlmxCgT0MDH//wAhAAADugXjAiYAWgAAAQYApR37ABQAsABFWLABLxuxARo+WbEKAfQwMf//ABz+rAT9BbACJgA6AAAABwCtBOQACv//ACH+rAO6BDoCJgBaAAAABwCtBE0ACv//AD3+rAbtBbACJgA7AAAABwCtBe8ACv//ACv+rAXTBDoCJgBbAAAABwCtBVMACv//AFb+rAR6BbACJgA+AAAABwCtBLoACv//AFj+rAOzBDoCJgBeAAAABwCtBGIACv///jL/7AVPBdYAJgAzRgAABwFx/cMAAP//ABMAAARwBRwCJgIzAAAABwCu/9z+3f///2MAAAPqBR8AJgIoPAAABwCu/qz+4P///4AAAASUBRwAJgHkPAAABwCu/sn+3f///4QAAAGNBR4AJgHjPAAABwCu/s3+3////9X/8ARkBRwAJgHdCgAABwCu/x7+3f///xsAAARYBRwAJgHTPAAABwCu/mT+3f///+4AAASIBRsAJgHzCgAABwCu/zf+3P//ABMAAARwBI0CBgIzAAD//wCKAAAD7wSNAgYCMgAA//8AigAAA64EjQIGAigAAP//AEcAAAPgBI0CBgHSAAD//wCKAAAEWASNAgYB5AAA//8AlwAAAVEEjQIGAeMAAP//AIoAAARXBI0CBgHhAAD//wCKAAAFdwSNAgYB3wAA//8AigAABFgEjQIGAd4AAP//AGD/8ARaBJ0CBgHdAAD//wCKAAAEGwSNAgYB3AAA//8AKAAAA/0EjQIGAdgAAP//AA0AAAQcBI0CBgHTAAD//wAmAAAEMQSNAgYB1AAA////swAAAjwF4wImAeMAAAEHAGr/TgAeABcAsABFWLACLxuxAhw+WbELAvSwFNAwMQD//wANAAAEHAXjAiYB0wAAAQYAam0eABcAsABFWLAILxuxCBw+WbEQAvSwGdAwMQD//wCKAAADrgXjAiYCKAAAAQYAanEeABcAsABFWLAGLxuxBhw+WbETAvSwHNAwMQD//wCKAAADhQYeAiYB6gAAAQcAdQE0AB4AFACwAEVYsAQvG7EEHD5ZsQgG9DAx//8AQ//wA90EnQIGAdkAAP//AJcAAAFRBI0CBgHjAAD///+zAAACPAXjAiYB4wAAAQcAav9OAB4AFwCwAEVYsAIvG7ECHD5ZsQsC9LAU0DAxAP//ACv/8ANNBI0CBgHiAAD//wCKAAAEVwYeAiYB4QAAAQcAdQElAB4AFACwAEVYsAUvG7EFHD5ZsQ8G9DAx//8AIv/sBAsF9gImAgEAAAEGAKFnHwAUALAARViwAi8bsQIcPlmxFAj0MDH//wATAAAEcASNAgYCMwAA//8AigAAA+8EjQIGAjIAAP//AIoAAAOFBI0CBgHqAAD//wCKAAADrgSNAgYCKAAA//8AigAABGEF9gImAf4AAAEHAKEAyQAfABQAsABFWLAILxuxCBw+WbENCPQwMf//AIoAAAV3BI0CBgHfAAD//wCKAAAEWASNAgYB5AAA//8AYP/wBFoEnQIGAd0AAP//AIoAAAREBI0CBgHvAAD//wCKAAAEGwSNAgYB3AAA//8AYP/wBDAEnQIGAjEAAP//ACgAAAP9BI0CBgHYAAD//wAmAAAEMQSNAgYB1AAAAAEAR/5QA9QEnQApAJ0AsABFWLAKLxuxChw+WbAARViwGS8bsRkSPlmwAEVYsBgvG7EYFD5ZsAoQsQMBsAorWCHYG/RZsgYKGRESObInGQoREjl8sCcvGLLwJwFdsgAnAXGyoCcBXbRgJ3AnAl2yMCcBcbRgJ3AnAnGxJgGwCitYIdgb9FmyECYnERI5sBkQsBbQsh0ZChESObAZELEgAbAKK1gh2Bv0WTAxATQmIyIGFSM0NjMyFhUUBgcWFhUUBgcRIxEmJjUzFhYzMjY1NCUjNTM2AwiKfW6Buu280+5uZ3Zxy6+6o7a5BYN5iJL+/52c7wNQVF1YT461qJZWjSkkkluMrxL+WwGnFK2IVmBgWMEFmAUAAQCK/pkE+gSNAA8AXwCwAS+wAEVYsAkvG7EJHD5ZsABFWLADLxuxAxI+WbAARViwBi8bsQYSPlmyCwMJERI5fLALLxiyoAsBXbEEAbAKK1gh2Bv0WbAJELAM0LADELEOAbAKK1gh2Bv0WTAxASMRIxEhESMRMxEhETMRMwT6uqH9pLm5Aly5ov6ZAWcB8v4OBI39/QID/AwAAAEAYP5WBDAEnQAfAFoAsABFWLAOLxuxDhw+WbAARViwAy8bsQMSPlmwAEVYsAUvG7EFFD5ZsAMQsAbQsA4QsBLQsA4QsRUBsAorWCHYG/RZsAMQsRwBsAorWCHYG/RZsAMQsB/QMDEBBgYHESMRJgI1NTQ2NjMyFhcjJiYjIgYHFRQWMzI2NwQwFMupurfXe+eYzPcTuRKNfpmnAZ+Xh40UAXmoxxT+YAGiHgEe42Gk+YjTu4J0y71qvc9vg///AA0AAAQcBI0CBgHTAAD//wAC/lEFawSdAiYCFwAAAAcCUQK8/7j//wCKAAAEYQXLAiYB/gAAAQcAcACcACYAEwCwAEVYsAgvG7EIHD5ZsAvcMDEA//8AIv/sBAsFywImAgEAAAEGAHA6JgATALAARViwES8bsREcPlmwE9wwMQD//wBgAAAFBgSNAgYB8QAA//8Al//wBTUEjQAmAeMAAAAHAeIB6AAA//8ACQAABfEGAAImAnMAAAAHAHUCngAA//8AYP/HBFoGHgImAnUAAAAHAHUBfQAe//8AQ/3/A90EnQImAdkAAAAHAboBKf6g//8AMQAABfEGHgImAdUAAAAHAEQBogAe//8AMQAABfEGHgImAdUAAAAHAHUCMQAe//8AMQAABfEF4wImAdUAAAAHAGoBawAe//8ADQAABBwGHgImAdMAAAAHAEQApAAe//8AHP5PBR0FsAImACUAAAAHAKQBfAAA//8Abf5PA+oETgImAEUAAAAHAKQAxAAA//8Aqf5ZBEYFsAImACkAAAAHAKQBOgAK//8AXf5PA/METgImAEkAAAAHAKQBBgAA//8AE/5PBHAEjQImAjMAAAAHAKQBHgAA//8Aiv5XA64EjQImAigAAAAHAKQA5wAI//8Ahf6sAWAEOgImAI0AAAAHAK0DTQAKAAEAAAUOAI8AFgBUAAUAAQAAAAAADgAAAgACJAAGAAEAAABhAGEAYQBhAGEAlAC5AToBrgJAAtQC6wMVAz8DcgOYA7cDzgPwBAcEVQSDBNMFSgWOBfAGUQZ+BvMHWwdwB4UHpAfMB+sISgjvCTUJlQnqCjAKcgqpCxYLYQt8C68MBAwoDHYMsg0IDVQNug4XDoMOrg7wDyAPdQ/KD/oQMxBYEG8QlRC8ENcQ9xFxEdASJBKDEuwTPxO6FAAUORSGFN0U+BVkFa8V/hZjFsUXAxdvF8IYCRg5GIcYzhkUGU0ZjhmlGeUaLRphGr4bMRuVG/ccFhy9HOwdlB4EHhAeLh7oHwIfPx+DH9QgUCBwILog5iEGIUIhdCG/Icsh5SH/IhkieyLgIx4jmiPvJGAlICWQJeMmVSa1JywniyemJ/YoQSh/KNApLCmxKkwqfSrkK0wrtywYLGwsxiz1LVotiC2sLbot5i4GLj8udS66Lu0vKy9IL2Uvbi+hL9Iv7jAKME4wWjCBMK8xLDFZMZ0xzDIJMn4y2DNBM7c0LjRhNNQ1QjWfNeo2azaZNvM3Yze1OBA4bDjEOQg5Sjm0OhE6eDrwO0Q7uzwXPJI9Cj1+PdM+ED5pPsI/MT+oP+1AOECAQPJBKEFtQatB9EJNQrFC/kN9RA9Ea0TcRVRFe0XSRkZGwUb6R1JHmkfiSD9IbkiaSSZJXEmdSdtKIEp4SttLJkuZTCBMfEz1TXdN7k5dTsVPAU9kT8VQLlCyUU5RmlHpUlRSw1M5U6lUNVTAVVJV7VZwVupXL1d1V+JYSlkFWcFaQVrBWxNbYVuWW7Jb6lwAXBZc6l1dXXhdk139XllezV79Xyhffl/UX+Bf7F/4YARgW2C+YRNhc2F/YYth1mJAYp9i/2OgZDlkRWRRZKJk5mTyZP5lTmWcZd5mUGbCZxtngGeMZ5hoEmiKaJZoomiuaLppJGmFaeBp72oDag9qG2ppas1rVWvHbDZsmmz8bWtt1m5gbuNvQG+Tb+ZwOHCvcLtwx3D2cPZw9nD2cPZw9nD2cPZw9nD2cPZw9nD2cPZw/nEGcRBxGnEycVZxenGdcbhxxHHQcghyR3Kpcs1y2XLpcwxz33P7dBh0K3Q/dIZ1EHWudj92S3crd494DXiseRB5i3nlelF7A3tqfAB8XnzCfNx89n0QfSp9nH3Dffx+GH5NfuB/In+vf/CADoAsgGWAcoCcgL+Ay4E0gYeCFIKDgvaDw4PDhXaF4oYyhl6GqIcGh32HrogViHmIwIk+iZKJxIoSikuKe4rEixyLTIuKi7WMHIx1jNSNH41zjayN/Y4hjmSOmo61jvaPVo+OkAKQZ5DGkPCRJpGOkcCSDpJAkoCS55M/k6GUAJRylOiVXpWxlfGWSpailxaXkZfNmB2YZpismOeZKZlpmbOaDZoZmmea15tVm62b8Jx2nNidOZ2XniyePZ6YnuWfM591n+agSqCwoSGhtaI7otKjRaO1o/ikVaSvpNylWaW4pc+mNaZ6pyWniaftqD2og6jEqQapTqmjqgqqSqpkqrOrKKtwq7isGKyGrLOtAq1irXatiq2crbCtwq3Zre2uSa67rwivaK/Rr/ywULCisOaxPbFksdWx67JvstKy/rMPsyCzM7NEs1WzaLN7s46zpLOss7SzvLPNs9iz4LRItJe0xLUltXi12bZUtp63BLdmt8q4Q7hLuOa5M7mfue+6aLrWuye7J7svu5W7+7xavJ29A70avTG9SL1fvXi9kb2dvam9wL3Xve6+B74evjW+TL5lvny+k76qvsG+2L7xvwi/H782v0+/Zr99v5S/qr/Av9m/8r/+wArAIcA4wE7AZ8B9wJPAqsDDwNnA8MEHwR3BM8FMwWPBesGQwanBwMHYwe/CBcIcwjPCl8Mvw0bDXcN0w4rDocO4w8/D5cP8xC3ERMRaxHHEiMSfxLbFIMWmxb3F08XqxgDGF8YuxkXGXMZoxn/Glsaoxr/G1sbtxwTHG8cyxz3HSMdfx2vHd8eOx6XHsce9x9TH68f3yAPIGMhNyFnIZch8yJPIn8iryMLI2MjtyQTJGskxyUjJYcl6yZHJqMm0ycDJ18ntygTKG8oyykjKVMpgymzKeMqPyqXKscq9ysnK1crsywLLGcsvy0bLXMtzy4rLo8u8y9XL7sxMzLPMyszhzPjNDs0nzT7NVc1szYPNms2wzcfN3s31zgzOL85XzmrOgc6Yzq7OxM7dzvbPAs8OzyXPPM9Sz2rPgM+Wz63Pxs/dz/TQC9Ai0DnQUtBp0IDQltCv0MbQ3NDz0VfRbtGE0ZvRstHI0d7R9NIL0nbSjNKi0rnS0NLc0vPTCtMh0zjTQ9NZ03DTfNOS057Ts9O/09bT4tP51BDUJ9RA1FfUY9R51JDUptSy1MjU1NTq1PbVDNUi1TnVUtVr1cjV39X11g3WJNY71lHWXNZo1nTWgNaM1pjWpNbA1sjW0NbY1uDW6Nbw1vjXANcI1xDXGNcg1yjXMNdJ12LXedeQ16fXvdfY1+DX6Nfw1/jYY9h72JPYqtjB2NjY8dkI2XTZfNmV2Z3Zpdm82dPZ29nj2evZ89oK2hLaGtoi2iraMto62kLaStpS2lracdp52oHa1drd2uXa/tsV2x3bJds+20bbXdtz24rbodu428/b6NwB3BjcL9w33D/cS9xi3GrcgdyY3KTcsNzH3N7c9d0M3RTdHN013U7dWt1m3XLdft2K3Zbdnt2m3a7dxd3c3eTd+94S3iveRN5M3lTea96C3pveo9683tXe7t8H3x/fNt9M32Xfft+X37DfuN/A39nf8uAL4CPgOuBQ4GnggeCa4LPgzODk4QHhHuEm4TLhPuFV4WzhheGd4bbhzuHn4f/iGOIw4kviZeJ+4pfisOLJ4uLi++MU4y3jSONj42/je+OS46njwOPW4+/kB+Qg5DjkUeRp5ILkmuS15M/k5uT95QnlFeUh5S3lROVb5XTljOWl5b3l1uXu5gfmH+Y65lTma+aC5pnmsObH5t7m9ecL5xfnI+cv5zvnUudp54Dnl+eu58Xn3Ofz6AroIOgs6DjoROhQ6GfofuiV6KvowOjM6Njo5Ojw6PzpCOkU6SDpKOmI6ejqK+pr6s/rLut468jsIex47IDsjOyW7J7spuyu7LbsvuzG7M7s1uzt7QTtG+0y7UvtZO197Zbtr+3I7eHt+u4T7izuRe5e7mrudu6C7o7umu6r7rfuw+7P7ubu+O8E7xDvHO8o7zTvQO9M71jveu+R76jvtO/A78zv2O/k7/DwCPAf8DXwQfBN8FnwZfBx8H3wifCV8KHwrfC58MXw0fDd8OXw7fD18P3xBfEN8RXxHfEl8S3xNfE98UXxTfFm8X7xlvGt8bXxvfHW8d7x9fIL8hPyG/Ij8ivyQvJK8lLyWvJi8mrycvJ68oLzDfNa87nzwfPN8+Tz+vQC9A70GvQm9DL0PvRK9Fb0YvRu9Hr0hvSS9J70qvS2AAAAAQAAAAIjEutvwDJfDzz1ABkIAAAAAADE8BEuAAAAANUBUvT6G/3VCTAIcwAAAAkAAgAAAAAAAAOMAGQAAAAAAAAAAAH7AAAB+wAAAg8AoAKPAIgE7QB3BH4AbgXcAGkE+QBlAWUAZwK8AIUCyAAmA3IAHASJAE4BkgAdAjUAJQIbAJADTAASBH4AcwR+AKoEfgBdBH4AXgR+ADUEfgCaBH4AhAR+AE0EfgBwBH4AZAHwAIYBsQApBBEASARkAJgELgCGA8cASwcvAGoFOAAcBPsAqQU1AHcFPwCpBIwAqQRsAKkFcwB6BbQAqQItALcEagA1BQQAqQROAKkG/ACpBbQAqQWAAHYFDACpBYAAbQTtAKgEvwBQBMYAMQUwAIwFFwAcBxkAPQUEADkEzgAPBMoAVgIfAJIDSAAoAh8ACQNYAEADnAAEAnkAOQRaAG0EfQCMBDAAXASDAF8EPQBdAscAPAR9AGAEaACMAfEAjQHp/78EDgCNAfEAnAcDAIsEagCMBJAAWwR9AIwEjABfArUAjAQgAF8CnQAJBGkAiAPgACEGAwArA/cAKQPJABYD9wBYArUAQAHzAK8CtQATBXEAgwHzAIsEYABpBKYAWwW0AGkEMwAPAesAkwToAFoDWABlBkkAWwOTAJMDwQBmBG4AfwZKAFoDqgCOAv0AggRGAGEC7wBCAu8APgKCAHsEiACaA+kAQwIWAJMB+wB0Au8AegOjAHoDwABmBdwAVQY1AFAGOQBvA8kARAd6//IERABZBYAAdgS6AKYEwgCLBsEATgSwAH4EkQBHBIgAWwScAJUExwBfBZoAHQH6AJsEcwCaBE8AIgIpACIFiwCiBIgAkQehAGgHRABhAfwAoAWHAF0Cuf/kBX4AZQSSAFsFkACMBPMAiAID/7QENwBiA8QAqQONAI0DqwCOA2oAgQHxAI0CrQB5AioAMgPGAHsC/ABeAloAfgAA/KcAAP1vAAD8iwAA/V4AAPwnAAD9OAINALcECwBxAhcAkwRzALEFpAAfBXEAZwU+ADIEkQB4BbUAsgSRAEUFuwBNBYkAWgVSAHEEhQBkBL0AoAQCAC4EiABgBFAAYwQlAG0EiACRBI4AegKXAMMEbgAlA+wAZQTEACkEiACRBE0AZQSIAGAELABRBF0AjwWjAFcFmgBfBpcAegShAHkEQv/aBkgASgX/ACoFZAB7CJEAMQikALEGggA+BbQAsAULAKIGBAAyB0MAGwS/AFAFtACxBakALwUHAE0GLABTBdkArwV6AJYHhwCwB8AAsAYSABAG6wCyBQUAowVkAJMHJwC3BRgAWQRsAGEEkgCdA1sAmgTUAC4GIAAVBBAAWASeAJwEUgCcBKAALAXvAJ0EnQCcBJ4AnAPYACgFzQBkBL0AnARZAGcGeACcBp4AkQT3AB4GNgCdBFgAnQRNAGQGhwCdBGQALwRo/+gETQBnBskAJwbkAJwEif/9BJ4AnAcIAJwGKwCBBFb/3AcrALcF+ACZBNIAKARGAA8HCwDJBgsAvAbRAJMF4QCWCQQAtgfRAJsEIwBQA9sATAVxAGcEiwBbBQoAFgQDAC4FcQBnBIgAWwcBAJwGJAB+BwgAnAYrAIEFMgB1BEcAZAT9AHQAAPxnAAD8cQAA/WYAAP2kAAD6GwAA+iwGCQCxBO0AnARW/9wFGwCoBIkAjARjAKIDkACRBNsAsQQFAJEHogAbBmEAFQWaALIEuACcBQkAowR+AJoGjABEBYMAPgX/AKkE2QCcB88AqAW0AJEIMQCwBvQAkQXuAHEE0wBtBRgAOQQqACkHLAA0BVwAHwW8AJYElgBnBW8AlgRqAIMFbwCJBi8APwS9/94FCQCjBFoAmgX+AC8E7wAsBbIAsQSIAJEGEgCpBOwAnAdPAKkGPgCdBYcAXQSoAGgEqABpBLcAOgOrADsFLgA5BEAAKQT2AFcGlABZBuQAZAZWADYFKwAxBEkAUgQHAHkHwQBEBnUAPwf7AKkGoQCQBPYAdgQdAGUFrQAjBSAARgVkAJYGAgAvBPIALAMgAG8EFAAACCkAAAQUAAAIKQAAArkAAAIKAAABXAAABH8AAAIwAAABogAAAQAAAADRAAAAAAAAAjQAJQI0ACUFQACiBj8AkAOlAA0BmQBgAZkAMAGXACQBmQBPAtQAaALbADwCwQAkBGkARgSPAFcCsgCKA8QAlAVaAJQBfgBSB6oARAJmAGwCZgBZA6MAOwLvADYDYAB6BKYAWwZVAB8GkACnCHYAqAXrAB8GKwCMBH4AXwXaAB8EIgAqBHQAIAVIAF0FTwAfBecAegPOAGgIOgCiBQEAZwUXAJgGJgBUBtcAZAbPAGMGagBZBI8AagWOAKkErwBFBJIAqATFAD8IOgBiAgz/sASCAGUEZACYBBEAPgQvAIUECAArAkwAtQKPAG4CAwBcBPMAPARuAB8EiwA8BtQAPAbUADwE7gA8BpsAXwAAAAAIMwBbCDUAXALvAEIC7wB6Au8AUAQPAFUEDwBgBA8AQgQOAHIEDwCABA8AMAQPAE4EDwBOBA8AmAQPAGMEIwBHBCsADQRUACYGFQAxBGcAFAR8AHQEJgAoBCAAQwRKAIoEuwBZBFwAigS7AGAE4wCKBgIAigO0AIoEVACKA88AKwHoAJcE4wCKBKwAYwPLAIoEIABDBDMAMAOhAA0DrwCKBGcAFAS7AGAEZwAUA4kAPgTOAIoD7wA/BWcAYAUXAGAE8gB1BXIAJgR8AGAHQQAnB08AigV0ACgEzQCKBFkAigUkAC4GCwAfBD8ARwTsAIoETgCLBMEAJwQfACIFKACKBGoAPQZRAIoGrACKBR0ACAXxAIoETgCKBHsASwZ2AIoEhwBQBBEACwZHAB8EeQCLBQkAiwU3ACMFwgBgBF8ADQSoACYGYQAmBGoAPQRqAIoFwwACBMoAXgQ/AEcEuwBgBDMAMAPjAEIIIgCKBKsAKALvAD4C7wA2Au8AWwLvAFYC7wA6Au8ATwLvAEkDlgCPArUAngPmAIoEOgAeBMMAZAVMALEFJACyBBMAkgU9ALIEDwCSBIAAigR8AGAEUACKBIUAEwH9AJ8DpACBAAD8pAPvAG4D8/9eBA4AaQP0AGkDrwCKA58AgQOeAIEC7wBQAu8ANgLvAFsC7wBWAu8AOgLvAE8C7wBJBYEAfgWuAH4FkwCyBeAAfgXjAH4D1QCgBIIAgwRYAA8EzwA+BGsAZQQuAEoDpACDAZEAZwakAGAEuQCCAfz/tgR/ADsEfwBzBH8AIwR/AHcEfwB2BH8ANwR/AH4EfwBfBH8AcAR/APQCBv+0AgT/tAH7AJsB+//6AfsAmwRQAIoFAAB4BCAAOwR9AIwEMgBcBJMAWwSMAFsEngBaBI0AjAScAFsEPQBdBH0AYAN5AFcE1gBnA7QAAAY5AAkD+ACKBLsAYATjADAE4wCKAfsAAAI1ACUFXQAHBV0ABwSG/+IExgAxAp3/9AU4ABwFOAAcBTgAHAU4ABwFOAAcBTgAHAU4ABwFNQB3BIwAqQSMAKkEjACpBIwAqQIt/+ACLQCwAi3/6QIt/9UFtACpBYAAdgWAAHYFgAB2BYAAdgWAAHYFMACMBTAAjAUwAIwFMACMBM4ADwRaAG0EWgBtBFoAbQRaAG0EWgBtBFoAbQRaAG0EMABcBD0AXQQ9AF0EPQBdBD0AXQH6/8YB+gCWAfr/zwH6/7sEagCMBJAAWwSQAFsEkABbBJAAWwSQAFsEaQCIBGkAiARpAIgEaQCIA8kAFgPJABYFOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FNQB3BDAAXAU1AHcEMABcBTUAdwQwAFwFNQB3BDAAXAU/AKkFGQBfBIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQVzAHoEfQBgBXMAegR9AGAFcwB6BH0AYAVzAHoEfQBgBbQAqQRoAIwCLf+3Afr/nQIt/8wB+v+yAi3/7AH6/9ICLQAYAfH/+wItAKkGlwC3A9oAjQRqADUCA/+0BQQAqQQOAI0ETgChAfEAkwROAKkB8QBXBE4AqQKHAJwETgCpAs0AnAW0AKkEagCMBbQAqQRqAIwFtACpBGoAjARq/7wFgAB2BJAAWwWAAHYEkABbBYAAdgSQAFsE7QCoArUAjATtAKgCtQBTBO0AqAK1AGMEvwBQBCAAXwS/AFAEIABfBL8AUAQgAF8EvwBQBCAAXwS/AFAEIABfBMYAMQKdAAkExgAxAp0ACQTGADECxQAJBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBTAAjARpAIgFMACMBGkAiAUwAIwEaQCIBxkAPQYDACsEzgAPA8kAFgTOAA8EygBWA/cAWATKAFYD9wBYBMoAVgP3AFgHev/yBsEATgWAAHYEiABbBID/vgSA/74EJgAoBIUAEwSFABMEhQATBIUAEwSFABMEhQATBIUAEwR8AGAD5gCKA+YAigPmAIoD5gCKAej/vgHoAI4B6P/HAej/swTjAIoEuwBgBLsAYAS7AGAEuwBgBLsAYAR8AHQEfAB0BHwAdAR8AHQEKwANBIUAEwSFABMEhQATBHwAYAR8AGAEfABgBHwAYASAAIoD5gCKA+YAigPmAIoD5gCKA+YAigSsAGMErABjBKwAYwSsAGME4wCKAej/lQHo/6oB6P/KAegABgHoAIgDzwArBFQAigO0AIIDtACKA7QAigO0AIoE4wCKBOMAigTjAIoEuwBgBLsAYAS7AGAESgCKBEoAigRKAIoEIABDBCAAQwQgAEMEIABDBCYAKAQmACgEJgAoBHwAdAR8AHQEfAB0BHwAdAR8AHQEfAB0BhUAMQQrAA0EKwANBCMARwQjAEcEIwBHBTgAHASM/ykFtP83Ai3/PQWU/+YFMv8UBWb/6QKX/5sFOAAcBPsAqQSMAKkEygBWBbQAqQItALcFBACpBvwAqQW0AKkFgAB2BQwAqQTGADEEzgAPBQQAOQIt/9UEzgAPBIUAZARQAGMEiACRApcAwwRdAI8EcwCaBJAAWwSIAJoD4AAhA/cAKQKX/+UEXQCPBJAAWwRdAI8GlwB6BIwAqQRzALEEvwBQAi0AtwIt/9UEagA1BSQAsgUEAKkFBwBNBTgAHAT7AKkEcwCxBIwAqQW0ALEG/ACpBbQAqQWAAHYFtQCyBQwAqQU1AHcExgAxBQQAOQRaAG0EPQBdBJ4AnASQAFsEfQCMBDAAXAPJABYD9wApBD0AXQNbAJoEIABfAfEAjQH6/7sB6f+/BFIAnAPJABYHGQA9BgMAKwcZAD0GAwArBxkAPQYDACsEzgAPA8kAFgFlAGcCjwCIBB4AoAID/7QBmQAwBvwAqQcDAIsFOAAcBFoAbQSMAKkFtACxBD0AXQSeAJwFiQBaBZoAXwUKABYEA//7CFkAWwlJAHYEvwBQBBAAWAU1AHcEMABcBM4ADwQCAC4CLQC3B0MAGwYgABUCLQC3BTgAHARaAG0FOAAcBFoAbQd6//IGwQBOBIwAqQQ9AF0FhwBdBDcAYgQ3AGIHQwAbBiAAFQS/AFAEEABYBbQAsQSeAJwFtACxBJ4AnAWAAHYEkABbBXEAZwSLAFsFcQBnBIsAWwVkAJMETQBkBQcATQPJABYFBwBNA8kAFgUHAE0DyQAWBXoAlgRZAGcG6wCyBjYAnQSDAF8FOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFr/ygU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0FOAAcBFoAbQU4ABwEWgBtBTgAHARaAG0EjACpBD0AXQSMAKkEPQBdBIwAqQQ9AF0EjACpBD0AXQSM//AEPf+6BIwAqQQ9AF0EjACpBD0AXQSMAKkEPQBdAi0AtwH6AJsCLQCjAfEAhQWAAHYEkABbBYAAdgSQAFsFgAB2BJAAWwWAAEcEkP/EBYAAdgSQAFsFgAB2BJAAWwWAAHYEkABbBX4AZQSSAFsFfgBlBJIAWwV+AGUEkgBbBX4AZQSSAFsFfgBlBJIAWwUwAIwEaQCIBTAAjARpAIgFkACMBPMAiAWQAIwE8wCIBZAAjATzAIgFkACMBPMAiAWQAIwE8wCIBM4ADwPJABYEzgAPA8kAFgTOAA8DyQAWBKEAXwTGADED2AAoBXoAlgRZAGcEcwCxA1sAmgYvAD8Evf/eBGgAjAUF/9QFBf/UBHMAAwNb//wFOP/3BCf/vwTOAA8EAgAuBQQAOQP3ACkEUABjBGwAEgY/AJAEfgBdBH4AXgR+ADUEfgCaBJIAmASmAIQEkgBkBKYAhwVzAHoEfQBgBbQAqQRqAIwFOAAcBFoAOQSMAF8EPQApAi3/CgH6/vAFgAB2BJAAMwTtAFUCtf+LBTAAjARpACsEpv7WBPsAqQR9AIwFPwCpBIMAXwU/AKkEgwBfBbQAqQRoAIwFBACpBA4AjQUEAKkEDgCNBE4AqQHxAIYG/ACpBwMAiwW0AKkEagCMBYAAdgUMAKkEfQCMBO0AqAK1AIIEvwBQBCAAXwTGADECnQAJBTAAjAUXABwD4AAhBRcAHAPgACEHGQA9BgMAKwTKAFYD9wBYBcb+MgSFABMEIv9jBR//gAIk/4QExf/VBGf/GwT8/+4EhQATBFAAigPmAIoEIwBHBOMAigHoAJcEVACKBgIAigTjAIoEuwBgBFwAigQmACgEKwANBFQAJgHo/7MEKwANA+YAigOvAIoEIABDAegAlwHo/7MDzwArBFQAigQfACIEhQATBFAAigOvAIoD5gCKBOwAigYCAIoE4wCKBLsAYATOAIoEXACKBHwAYAQmACgEVAAmBD8ARwTjAIoEfABgBCsADQXDAAIE7ACKBB8AIgVnAGAFtwCXBjkACQS7AGAEIABDBhUAMQYVADEGFQAxBCsADQU4ABwEWgBtBIwAqQQ9AF0EhQATA+YAigH6AIUAAQAAB2z+DAAACUn6G/5KCTAAAQAAAAAAAAAAAAAAAAAABQ4AAwSGAZAABQAABZoFMwAAAR8FmgUzAAAD0QBmAgAAAAIAAAAAAAAAAADgAAL/UAAgWwAAACAAAAAAR09PRwBAAAD//QYA/gAAZgeaAgAgAAGfAAAAAAQ6BbAAIAAgAAMAAAABAAAFEAkKBAAAAgICAwYFBwYCAwMEBQICAgQFBQUFBQUFBQUFAgIFBQUECAYGBgYFBQYGAgUGBQgGBgYGBgUFBgYIBgUFAgQCBAQDBQUFBQUDBQUCAgUCCAUFBQUDBQMFBAcEBAQDAgMGAgUFBgUCBgQHBAQFBwQDBQMDAwUEAgIDBAQHBwcECAUGBQUIBQUFBQUGAgUFAgYFCQgCBgMGBQYGAgUEBAQEAgMCBAMDAAAAAAAAAgUCBQYGBgUGBQYGBgUFBQUFBQUFAwUEBQUFBQUFBgYHBQUHBwYKCgcGBgcIBQYGBgcHBggJBwgGBggGBQUEBQcFBQUFBwUFBAcFBQcHBgcFBQcFBQUICAUFCAcFCAcFBQgHCAcKCQUEBgUGBQYFCAcIBwYFBgAAAAAAAAcGBQYFBQQFBQkHBgUGBQcGBwUJBgkIBwUGBQgGBgUGBQYHBQYFBwYGBQcGCAcGBQUFBAYFBgcIBwYFBQkHCQcGBQYGBgcGBAUJBQkDAgIFAgIBAQACAgYHBAICAgIDAwMFBQMEBgIJAwMEAwQFBwcKBwcFBwUFBgYHBAkGBgcICAcFBgUFBQkCBQUFBQUDAwIGBQUICAYHAAkJAwMDBQUFBQUFBQUFBQUFBQcFBQUFBQUFBQYHBAUEAgYFBAUFBAQFBQUEBQQGBgYGBQgIBgUFBgcFBgUFBQYFBwgGBwUFBwUFBwUGBgYFBQcFBQYFBQUFBAkFAwMDAwMDAwQDBAUFBgYFBgUFBQUFAgQABAQFBAQEBAMDAwMDAwMGBgYHBwQFBQUFBQQCBwUCBQUFBQUFBQUFBQICAgICBQYFBQUFBQUFBQUFBAUEBwQFBgYCAgYGBQUDBgYGBgYGBgYFBQUFAgICAgYGBgYGBgYGBgYFBQUFBQUFBQUFBQUFAgICAgUFBQUFBQUFBQUEBAYFBgUGBQYFBgUGBQYFBgYFBQUFBQUFBQUFBgUGBQYFBgUGBQICAgICAgICAgcEBQIGBQUCBQIFAwUDBgUGBQYFBQYFBgUGBQYDBgMGAwUFBQUFBQUFBQUFAwUDBQMGBQYFBgUGBQYFBgUIBwUEBQUEBQQFBAgIBgUFBQUFBQUFBQUFBQQEBAQCAgICBgUFBQUFBQUFBQUFBQUFBQUFBQQEBAQEBQUFBQYCAgICAgQFBAQEBAYGBgUFBQUFBQUFBQUFBQUFBQUFBQUHBQUFBQUGBQYCBgYGAwYGBQUGAgYIBgYGBQUGAgUFBQUDBQUFBQQEAwUFBQcFBQUCAgUGBgYGBgUFBggGBgYGBgUGBQUFBQUFBAQFBAUCAgIFBAgHCAcIBwUEAgMFAgIICAYFBQYFBQYGBgUJCgUFBgUFBQIIBwIGBQYFCAgFBQYFBQgHBQUGBQYFBgUGBQYFBgUGBAYEBgQGBQgHBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQUFBQUFBQUFBQUFBQUFBQUCAgICBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYGBgYGBgYGBgYFBAUEBQQFBQQGBQUEBwUFBgYFBAYFBQUGBAUFBwUFBQUFBQUFBgUGBQYFBQUCAgYFBgMGBQUGBQYFBgUGBQYFBgUFAggIBgUGBgUGAwUFBQMGBgQGBAgHBQQHBQUGAgUFBgUFBAUGAgUHBgUFBQUFAgUEBAUCAgQFBQUFBAQGBwYFBQUFBQUFBgUFBgYFBgYHBQUHBwcFBgUFBQUEAgAAAAMAAAADAAAAHAADAAEAAAAcAAMACgAABooABAZuAAAA9ACAAAYAdAAAAAIADQB+AKAArACtAL8AxgDPAOYA7wD+AQ8BEQElAScBMAFTAV8BZwF+AX8BjwGSAaEBsAHwAf8CGwI3AlkCvALHAskC3QLz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AxgDGgMcAx4DIAMiAyQDJQMnAykDKwMtA4YDhwOIA4kDigOLA4wDjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA9MD1QPXA9kD7gPwA/IEBwQNBBMEfQSCBIYFBwUJAAIAAAACAAo6GAABA/IABAAAAfQHzjTGNMYH/AheNv43rjTMOcw3eghkOBg4GDe4OAI4GDgYOcw4RAwCDNA4ijlYOZQ03jaEObINRjdcOGY1jA2MODoOwjg6ODo3iDhmOHwPxDl2ECY1PDl2EEA4ZjnMEIY1xjb+Ocw2/hEIEgYTCBPqFIw5dhSSFJw4OheGGXgaahtwG4YbjBuSHowekh7MHwIfjDWgNaAhvjgYImAjXjTeJcA4GDgYNUI4GDgYOBgmljWgOBg1oChAKQYpmCn6KuA1lituNTwzRiuYLXI4ZjEAMTozJDMkOGYycDL6MyQzJDMkNv43iDlYOXYzRjhmNcY1ljTeNTw3uDe4N7g4GDTeNTw4GDgYOcw1ljTeNTw0xjNwNMY0xjTGOgg0EjRgOgI0vDnqOfA6AjnwOeo56jnqOeo0rjnwNMw5zDnMOcw5zDiKNv42/jb+Nv42/jb+Nv40zDd6N3o3ejd6OBg4GDgYOBg4GDnMOcw5zDnMOcw2hDdcN1w3XDdcN1w3XDdcNYw1jDWMNYw4OjeIN4g3iDeIN4g5djl2Nv43XDb+N1w2/jdcNMw0zDTMNMw5zDd6NYw3ejWMN3o1jDd6NYw3ejWMOBg4OjgYOBg4GDgYOBg3uDgCOAI4AjgCOBg4OjgYODo4GDg6ODo5zDeIOcw3iDnMN4g4fDh8OHw4ijiKOIo5lDaEOXY2hDmyObI5sjoCOgI6CDnwOfA58DnwOfA58DnwOgI6AjoCOgI6AjnwOfA58DoCOeo0vDS8NLw0vDoCOgI6AjoINv43ejgYOBg5zDaENv43rjd6ObI4GDgYN7g4GDgYOcw4RDiKNoQ03jgYNoQ4OjeIOXY3iDd6NcY4GDgYN7g3uDVCNv43rjXGN3o4GDgYOcw4RDTMOIo03jdcNYw3iDhmOXY1PDWMNZY5djmUOZQ5lDaEOXY0xjTGNMY4GDg6Nv43XDd6NYw5WDl2NMw2hDl2OBg03jU8OBg2/jdcNv43XDd6NYw1jDWMNN41PDnMN4g3iDhmNUI5djVCOXY1Qjl2Nv43XDb+N1w2/jdcNv43XDb+N1w2/jdcNv43XDb+N1w2/jdcNv43XDb+N1w2/jdcN3o1jDd6NYw3ejWMN3o1jDd6NYw3ejWMN3o1jDd6NYw4GDgYOcw3iDnMN4g5zDeIOcw3iDnMN4g5zDeIOcw3iDeINoQ5djaEOXY2hDl2OIo1xjWWODo1oDXGN7g2hDgYODo2/jdcN3o4GDnMN4g4fDeuOGY5zDnMOBg4Oje4N7g4AjgYODo4GDg6Ocw4RDhmOHw4ijlYOXY5WDl2OZQ5sjnMOfA6AjnwOeo6CDnqOfA6AjoIAAIApAAEAAQAAAAGAAYAAQALAAwAAgATABMABAAlACoABQAsAC0ACwAvADYADQA4ADgAFQA6AD8AFgBFAEYAHABJAEoAHgBMAEwAIABPAE8AIQBRAFQAIgBWAFYAJgBYAFgAJwBaAF0AKABfAF8ALACKAIoALQCWAJYALgCdAJ0ALwCxALUAMAC3ALkANQC7ALsAOAC9AL4AOQDAAMEAOwDDAMUAPQDHAM4AQADSANIASADUAN4ASQDgAO8AVADxAPEAZAD2APgAZQD7APwAaAD+AQAAagEDAQUAbQEKAQoAcAENAQ0AcQEYARoAcgEiASIAdQEuATAAdgEzATUAeQE3ATcAfAE5ATkAfQE7ATsAfgFDAUQAfwFUAVQAgQFWAVYAggFYAVgAgwFcAV4AhAGEAYUAhwGHAYkAiQHYAdgAjAHaAdsAjQHdAd0AjwHgAeEAkAHrAe0AkgH/Af8AlQIOAhAAlgIwAjAAmQIzAjMAmgJFAkUAmwJHAkgAnAJ6AnsAngJ9An0AoAJ/ApQAoQKZAqAAtwKiAqUAvwKqAq8AwwK0ArwAyQK+Ar4A0gLAAsAA0wLCAsIA1ALEAsQA1QLGAs8A1gLYAtoA4ALcAtwA4wLeAt4A5ALgAuAA5QLiAuIA5gLnAucA5wLpAukA6ALrAusA6QLtAu0A6gLvAu8A6wLxAv0A7AL/Av8A+QMBAwEA+gMDAwMA+wMOAw4A/AMQAxAA/QMSAxIA/gMgAyAA/wMiAyUBAAMnAycBBAMpAykBBQMvAzgBBgNDA0cBEANNA08BFQNUA1QBGANlA2kBGQNtA28BHgN4A3gBIQOGA4sBIgOOA50BKAOgA6ABOAOkA6QBOQOmA6YBOgOqA6oBOwOtA64BPAOwA7EBPgOzA7kBQAO7A70BRwO/A8QBSgPGA8cBUAPJA8wBUgPSA9MBVgPVA9UBWAPXA9cBWQPZA9wBWgPfA+QBXgPmA+YBZAPqA+sBZQPwA/ABZwPyA/sBaAP+A/8BcgQBBAQBdAQLBAwBeAQQBBABegQSBBgBewQeBEYBggRIBEgBqwRKBFcBrARfBF8BugRwBHUBuwR3BHcBwQR7BHwBwgR/BH8BxASBBIIBxQSEBIQBxwSGBIYByASXBJsByQSdBJ0BzgSfBKABzwSiBKIB0QSmBKgB0gSqBKoB1QSsBK4B1gSwBLAB2QSyBLIB2gS0BLoB2wS8BLwB4gS/BL8B4wTCBMYB5ATIBMgB6QTKBMsB6gTPBM8B7ATSBNIB7QTYBNgB7gTdBN0B7wToBOgB8ATqBOoB8QTxBPEB8gT1BPUB8wALADj/2ADS/9gA1v/YATn/2AFF/9gDDv/YAxD/2AMS/9gDwf/YBHf/2AS//9gAGAA6ABQAOwASAD0AFgEZABQCmQAWAyAAEgMiABYDJAAWA4sAFgOaABYDnQAWA9MAEgPVABID1wASA9kAFgPqABQD8gAWBHAAFgRyABYEdAAWBIYAFgTCABQExAAUBMYAEgABABP/IADnABD/FgAS/xYAJf9WAC7++AA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACU/+sAmf/rAJv/6gCy/1YAtP9WALv/6wC9/+gAyP/rAMn/6wDL/+oA0gAUANYAFAD3/+sBA//rAQ3/VgEY/+sBGv/oAR7/6wEi/+sBOQAUAUL/6wFFABQBYP/rAWH/6wFr/+sBhv8WAYr/FgGO/xYBj/8WAev/wAHt/8ACM//AAn//VgKA/1YCgf9WAoL/VgKD/1YChP9WAoX/VgKa/94Cm//eApz/3gKd/94Cnv/eAp//3gKg/94Cof/rAqL/6wKj/+sCpP/rAqX/6wKr/+sCrP/rAq3/6wKu/+sCr//rArD/6gKx/+oCsv/qArP/6gK0/+gCtf/oArb/VgK3/94CuP9WArn/3gK6/1YCu//eAr3/6wK//+sCwf/rAsP/6wLF/+sCx//rAsn/6wLL/+sCzf/rAs//6wLR/+sC0//rAtX/6wLX/+sC5f74Avn/6wL7/+sC/f/rAw4AFAMQABQDEgAUAxX/6gMX/+oDGf/qAxv/6gMd/+oDH//qAyP/6AMy/8ADM//AAzT/wAM1/8ADNv/AAzf/wAM4/8ADTf/AA07/wANP/8ADhv9WA47/VgOe/+sDov/qA6T/6wOm/+gDqf/qA6r/6wOr/+oDsv74A7b/VgPBABQDw//eA8T/6wPG/+sDyP/rA8n/6APL/+sD0v/oA9r/6APi/1YD4//eA+b/6wPr/+gD7P/rA/H/6wPz/+gD+P9WA/n/3gP6/1YD+//eA///6wQB/+sEAv/rBAz/6wQO/+sEEP/rBBT/6AQW/+gEGP/oBB3/6wQe/1YEH//eBCD/VgQh/94EIv9WBCP/3gQk/1YEJf/eBCb/VgQn/94EKP9WBCn/3gQq/1YEK//eBCz/VgQt/94ELv9WBC//3gQw/1YEMf/eBDL/VgQz/94ENP9WBDX/3gQ3/+sEOf/rBDv/6wQ9/+sEP//rBEH/6wRD/+sERf/rBEv/6wRN/+sET//rBFH/6wRT/+sEVf/rBFf/6wRZ/+sEW//rBF3/6wRf/+sEYf/rBGP/6gRl/+oEZ//qBGn/6gRr/+oEbf/qBG//6gRx/+gEc//oBHX/6AR3ABQEmf9WBJr/3gSc/+sEoP/rBKT/6gSp/+sEq//rBL8AFATD/+gExf/oBMv/wATS/8AE6v/AADMAOP/VADr/5AA7/+wAPf/dANL/1QDW/9UBGf/kATn/1QFF/9UB6wAOAe0ADgIzAA4Cmf/dAw7/1QMQ/9UDEv/VAyD/7AMi/90DJP/dAzIADgMzAA4DNAAOAzUADgM2AA4DNwAOAzgADgNNAA4DTgAOA08ADgOL/90Dmv/dA53/3QPB/9UD0//sA9X/7APX/+wD2f/dA+r/5APy/90EcP/dBHL/3QR0/90Ed//VBIb/3QS//9UEwv/kBMT/5ATG/+wEywAOBNIADgTqAA4AHQA4/7AAOv/tAD3/0ADS/7AA1v+wARn/7QE5/7ABRf+wApn/0AMO/7ADEP+wAxL/sAMi/9ADJP/QA4v/0AOa/9ADnf/QA8H/sAPZ/9AD6v/tA/L/0ARw/9AEcv/QBHT/0AR3/7AEhv/QBL//sATC/+0ExP/tABEALv/uADn/7gKV/+4Clv/uApf/7gKY/+4C5f/uAxT/7gMW/+4DGP/uAxr/7gMc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/+IAGAA4/+sAPf/zANL/6wDW/+sBOf/rAUX/6wKZ//MDDv/rAxD/6wMS/+sDIv/zAyT/8wOL//MDmv/zA53/8wPB/+sD2f/zA/L/8wRw//MEcv/zBHT/8wR3/+sEhv/zBL//6wA5AFH/7wBS/+8AVP/vAFz/8ADB/+8A7P/vAO3/7gDu//AA8P/vAPH/7wDz/+8A9P/vAPX/7wD2/+4A+P/vAPr/7wD7/+8A/v/vAQD/7wEF/+8BCf/0ASD/8QEr/+8BNP/wATb/7wE6/+8BPP/vAT7/7wFE//ABU//vAVX/7wFX/+8BXP/vAV7/8AFt/+8Cqv/vAvL/7wL0/+8C9v/vAvf/7wOg/+8Dxf/vA8f/7wPK//ADzP/vA9H/7wPh/+8D5//vA/b/8AQE//AECP/vBAr/7wQc/+8EfP/vBJj/7wS1/+8Et//vACMABv/yAAv/8gBa//UAXf/1AL3/9QD2//QBCf/1ARr/9QE6//UBbf/1AYT/8gGF//IBh//yAYj/8gGJ//ICtP/1ArX/9QMj//UDpv/1A8n/9QPS//UD2v/1A9v/8gPc//ID3//yA+v/9QPz//UEFP/1BBb/9QQY//UEcf/1BHP/9QR1//UEw//1BMX/9QAKAO0AFAD2/+0A+f/tAPz/4gE6/+0BSP/tAUr/7QFt/+0EGv/tBHr/7QB2AEf/8ABI//AASf/wAEv/8ABT/+sAVf/wAJT/8ACZ//AAu//wAMj/8ADJ//AA9//wAQP/8AEY/+sBHP/rAR7/8AEi//ABQv/wAWD/8AFh//ABa//wAdv/6wHd/+sB5f/pAez/6wH1/+sCEf/rAhr/6wIx/+sCof/wAqL/8AKj//ACpP/wAqX/8AKr/+sCrP/rAq3/6wKu/+sCr//rAr3/8AK///ACwf/wAsP/8ALF//ACx//wAsn/8ALL//ACzf/wAs//8ALR//AC0//wAtX/8ALX//AC+f/rAvv/6wL9/+sDOf/rA0P/6wNE/+sDRf/rA0b/6wNH/+sDUP/rA1H/6wNS/+sDU//rA1r/6wNb/+sDXP/rA13/6wNt/+sDbv/rA2//6wOe//ADpP/rA6r/6wPE//ADxv/rA8j/8APL//AD5v/wA+z/8APx//AD///wBAH/8AQC//AEDP/rBA7/8AQQ/+sEHf/wBDf/8AQ5//AEO//wBD3/8AQ///AEQf/w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AOwAPgDuAO4APwD3APcAQAD8APwAQQD+AP8AQgEEAQUARAEKAQoARgENAQ0ARwEYARoASAEuATAASwEzATUATgE3ATcAUQE5ATkAUgE7ATsAUwFDAUQAVAFUAVQAVgFWAVYAVwFYAVgAWAFcAV4AWQGEAYoAXAGOAY8AYwHYAdgAZQHdAd0AZgHgAeEAZwHrAe0AaQH/Af8AbAIOAhAAbQIwAjAAcAIzAjMAcQJFAkUAcgJHAkgAcwJ6AnsAdQJ9An0AdwJ/AqUAeAKqAq8AnwK0AsQApQLGAs8AtgLYAtoAwALcAtwAwwLeAt4AxALgAuAAxQLiAuIAxgLlAuUAxwLnAucAyALpAukAyQLrAusAygLtAu0AywLvAu8AzALxAv0AzQL/Av8A2gMBAwEA2wMDAwMA3AMOAw4A3QMQAxAA3gMSAxIA3wMUAxQA4AMWAxYA4QMYAxgA4gMaAxoA4wMcAxwA5AMeAx4A5QMgAyAA5gMiAyoA5wMvAzgA8ANDA0cA+gNNA08A/wNUA1QBAgNlA2kBAwNtA28BCAN4A3gBCwOGA4sBDAOOA50BEgOgA6ABIgOkA6QBIwOmA6YBJAOqA6oBJQOtA64BJgOwA7kBKAO7A70BMgO/A8QBNQPGA8wBOwPSA9MBQgPVA9UBRAPXA9cBRQPZA9wBRgPfA+QBSgPmA+YBUAPqA+sBUQPwA/sBUwP+A/8BXwQBBAQBYQQLBAwBZQQQBBABZwQSBBgBaAQeBEYBbwRIBEgBmARKBFcBmQRfBF8BpwRiBGIBqARkBGQBqQRwBHUBqgR3BHcBsAR7BHwBsQR/BH8BswSBBIIBtASEBIQBtgSGBIYBtwSXBJsBuASdBJ0BvQSfBKABvgSiBKIBwASmBKgBwQSqBKoBxASsBK4BxQSwBLAByASyBLIByQS0BLoBygS8BLwB0QS/BL8B0gTBBMYB0wTIBMsB2QTPBM8B3QTSBNIB3gTYBNgB3wTdBN0B4AToBOgB4QTqBOoB4gTxBPEB4wT1BPUB5AACAXQABgAGABkACwALABkAEAAQACEAEgASACEAJQAlAAIAJgAmABwAJwAnABMAKAAoAAEAKQApAAUALgAuAAoALwAvAAsAMAAwABgAMwAzAAEANAA0ABYAOAA4AA4AOQA5AAoAOgA6AB0AOwA7ABsAPAA8ABIAPQA9AAwAPgA+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AAMAAAAAAAAAAAAAAAAAAAARABUAAAADAAAAAAALAAAAAAADAAAAAwAAAAAAAgABABEAFQALAAAAIAAhAAAAAAAAAAAAAAAAAAAAGQAbAAAAAwAAAAMAAAADAAAAAAAAAAAAAwARABUAAAABAAEAAAAAAAAAAAAZAAAAAAAAAAIAAQAAAAAAAAAZABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAB8AAAAUABQAGgAUABQAFAAaAAAAAAAAABoAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAHAAkAAAAEgAYAB4AAAAIAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAA0ACAANAAAAAAAAAAAAAAAAABgACAAAAAAAGAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAGAAIABcAHAAYAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgAAAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAABgAGAAYABgAGAAYABgACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgAKAAoACgAKAAwABwAHAAcABwAHAAcABwABAAEAAQABAAEAAAAAAAAAAAADAAQABAAEAAQABAAFAAUABQAFAAkACQAGAAcABgAHAAYABwACAAEAAgABAAIAAQACAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAgABAAIAAQACAAEAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAMAAwACAAQAAgAEAAIABAAAAAAAAAAAAAAAAAAQAA4AEAAOABAADgAQAA4AEAAOAAsAAAALAAAACwAAAAoABQAKAAUACgAFAAoABQAKAAUACgAFABYAAAAMAAkADAATAA8AEwAPABMADwAAAAAAAgAAAAAAAAAAAA0ADQANAA0ADQANAA0ACAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAIAAgAEgASABIAEgAXAA0ADQANAAgACAAIAAgAAAAAAAAAAAAAAAAACAAIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgACAAAAAAAAAAeAB4AHgAeAAAAGAAAABIAEgASABIAEgASACQAFwAXAAAAAAAAAAYAAAAAAAAAAgAMAAAAAAAGAAAAAAATAAAAAAAAAAAAAAACAAAAAAAMABEAAAAMAAEAAAADAAAABQAAAAQAAAAJAAAAAAAFAAQABQAAAAAAAAAAAAAAAAAjAAAAAAAiAAYAAAAAAAAAAAAAAAAAAgAAAAAAAgALABEABwABAAMABAADAAEACQAVAAEAAwAOAAAAAAAAAAMACQAWAAAAFgAAABYAAAAMAAkAFAAUAAAAAAAUAAAAAwAGAAcAAAAAAAEAAwAAAAAAHQAJAAEAAgAAAAAAAgABAAwACQAAABEAFQAAAAYABwAGAAcAAAAAAAAAAQAAAAEAAQARABUAAAAAAAAAAwAAAAMAAgAEAAIAAQACAAQAAAAAACIACQAiAAkAIgAJACAAIQAAAAMAAQAGAAcABgAHAAYABwAGAAcABgAHAAYABwAGAAcABgAHAAYABwAGAAcABgAHAAYABwAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAAAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAAQACAAEAAgABAAIABAACAAEACgAFAAoABQAAAAUAAAAFAAAABQAAAAUAAAAFAAwACQAMAAkADAAJAAAACwAAACAAIQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAGAAcAAAABAAAAAAACAAQAAAAAAAAABQAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAIAAAAAAAAAAAAQAA4ACwAAAAoAHQAJAB0ACQAWAAAAEwAPAAAADQAAAAAAAAAIABcAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXABwAAAAXAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAgAAAAAAAgAGAAcAAAAAAAIABcAAQAAAAoBYgKSAARERkxUABpjeXJsABpncmVrABpsYXRuAEgABAAAAAD//wASAAAAAQACAAMABAAIAAwADQAOAA8AEAARABIAEwAUABUAFgAXAC4AB0FaRSAA5ENSVCAA5EZSQSAAWk1PTCAAtk5BViAAiFJPTSAAtlRSSyAA5AAA//8AEwAAAAEAAgADAAQABwAIAAwADQAOAA8AEAARABIAEwAUABUAFgAXAAD//wAUAAAAAQACAAMABAAGAAgACQAMAA0ADgAPABAAEQASABMAFAAVABYAFwAA//8AFAAAAAEAAgADAAQABgAIAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAAP//ABQAAAABAAIAAwAEAAYACAAKAAwADQAOAA8AEAARABIAEwAUABUAFgAXAAD//wATAAAAAQACAAMABAAFAAgADAANAA4ADwAQABEAEgATABQAFQAWABcAGGMyc2MAkmNjbXAAmGRsaWcAoGRub20ApmZyYWMArGxpZ2EAtmxpZ2EAvGxpZ2EAyGxudW0A0GxvY2wA1mxvY2wA3GxvY2wA4m51bXIA6G9udW0A7nBudW0A9HNtY3AA+nNzMDEBAHNzMDIBBnNzMDMBDHNzMDQBEnNzMDUBGHNzMDYBHnNzMDcBJHRudW0BKgAAAAEAAAAAAAIAAgAEAAAAAQAKAAAAAQAYAAAAAwAWABcAGQAAAAEACQAAAAQACAAJAAgACQAAAAIACAAJAAAAAQAVAAAAAQAHAAAAAQAFAAAAAQAGAAAAAQAZAAAAAQASAAAAAQATAAAAAQABAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQARAAAAAQAUABoANgQwB+4IoAjKD24PhA+uD8IP5hAQEEwQYBB0EIgQmhC0EPYRFBFmEawSDhJsEoASsBLSAAEAAAABAAgAAgH6APoB5wJxAdEB0AHPAc4BzQHMAcsBygHJAcgCMwIyAjECMAIoAeYB5QHkAeMB4gHhAeAB3wHeAd0B3AHbAdoB2QHYAdcB1gHVAdQB0wHSAegB6QJzAnUCdAJ2AnICdwJSAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQT+AgICAwIEAgUCBgIHAggCCQIKAgsCOwINAg4CDwIQBPgCEQITAhQCFQIWAhcCGAIZAhsCHAIeAh0DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjBP8DZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UFAgN2A3cDeQN4A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFBQAFAQTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaBNsE3ATdBN4E3wTgBOEE4gTjBOQE5QTmBOcB/wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gUDBQQFBQUGBPcE+QT6BPwCGgT9BPsCDAISBQsFDAABAPoACAAKABQAFQAWABcAGAAZABoAGwAcAB0AJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AGUAZwCBAIMAhACMAI8AkQCTALEAsgCzALQAtQC2ALcAuAC5ALoA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkBLwEzATUBNwE5ATsBQQFDAUUBSQFLAUwBWAFZAZcBnQGiAaUCegJ7An0CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCtgK4AroCvAK+AsACwgLEAsYCyALKAswCzgLQAtIC1ALWAtgC2gLcAt4C4ALiAuMC5QLnAukC6wLtAu8C8QLzAvUC+AL6AvwC/gMAAwIDBAMGAwgDCgMMAw4DEAMSAxQDFgMYAxoDHAMeAyADIgMkAyUDJwMpAysDLQOGA4cDiAOJA4oDiwOMA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPTA9UD1wPZA+4D8APyBAcEDQQTBH0EggSGBQcFCQABAAAAAQAIAAIB3ADrAnECMwIyAjECMAIoAeYB5QHkAeMB4gHhAeAB3wHeAd0B3AHbAdoB2QHYAdcB1gHVAdQB0wHSAmQCcwMwAnUCdAMvAeMCcgJ3AlIE0gTTAeoB6wTUBNUE1gHsBNcB7QHuAe8E3AHwAfAE3QTeAfEB8gHzAfoE6wTsAfsB/AH9Af4B/wIABO8E8ATyBPUE/gICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5AjsCDQIOAg8CEAT4AhECEwIUAhUCFwIZAnYDMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTAOCA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IE/wNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQUCA3YDdwN5A3gDegN7A3wDfQN+A38DgAOBA4MDhAOFBQAFAQTLBMwEzQTOBNgE2wTZBNoE3wTgBOEEzwTQBNEE6gTtBO4E8QTzBPQCAQT2BOIE4wTkBOUE5gTnBOgE6QUDBQQFBQUGBPcE+QT6AhgE/AIaBP0E+wIWAgwCEgULBQwAAQDrAAoARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAIUAhgCHAIkAigCLAI0AkACSAJQAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHATABNAE2ATgBOgE8AUIBRAFGAUoBTQFaAnwCfgKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArcCuQK7Ar0CvwLBAsMCxQLHAskCywLNAs8C0QLTAtUC1wLZAtsC3QLfAuEC5ALmAugC6gLsAu4C8ALyAvQC9gL5AvsC/QL/AwEDAwMFAwcDCQMLAw0DDwMRAxMDFQMXAxkDGwMdAx8DIQMjAyYDKAMqAywDLgOeA58DoAOhA6MDpAOlA6YDpwOoA6kDqgOrA6wDwwPEA8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPUA9YD2APaA+8D8QPzBAEECAQOBBQEfgR/BIMEhwUIBQoABgAAAAYAEgAqAEIAWgByAIoAAwAAAAEAEgABAJAAAQAAAAMAAQABAE0AAwAAAAEAEgABAHgAAQAAAAMAAQABAE4AAwAAAAEAEgABAGAAAQAAAAMAAQABAuEAAwAAAAEAEgABAEgAAQAAAAMAAQABA84AAwAAAAEAEgABADAAAQAAAAMAAQABA9AAAwAAAAEAEgABABgAAQAAAAMAAQABBEkAAgACAKgArAAAASQBJwAFAAEAAAABAAgAAgASAAYCYQJfAmICYwJgBQ0AAQAGAE0ATgLhA84D0ARJAAQAAAABAAgAAQYyADYAcgCkAK4AuADKAPwBDgEYAUoBZAF+AZABugH2AgACIgI8Ak4CigKcArYC4ALyAyQDLgM4A0oDfAOGA5ADmgO0A84D4AQKBDwERgRoBIIElATGBNgE8gUcBS4FOAVCBUwFVgWABaoF1AX+BigABgAOABQAGgAgACYALAKAAAIAqQQeAAIArQJ/AAIAqAQgAAIAqwKCAAIAqgSZAAIArAABAAQEpgACAK0AAQAEArwAAgCpAAIABgAMBKoAAgG6BKgAAgCtAAYADgAUABoAIAAmACwCiAACAKkENgACAK0ChwACAKgEOAACAKsEOgACAKoEmwACAKwAAgAGAAwElQACAKkC1gACAboAAQAEBKwAAgCtAAYADgAUABoAIAAmACwCjAACAKkESAACAK0CiwACAKgERgACAKsC2gACAKoEnQACAKwAAwAIAA4AFASuAAIAqQLnAAIBugSwAAIArQADAAgADgAUAukAAgCpAusAAgG6BLIAAgCtAAIABgAMA+AAAgCpBLQAAgCtAAUADAASABgAHgAkAvEAAgCpAvMAAgG6BLYAAgCtBJcAAgCoAo8AAgCqAAcAEAAYAB4AJAAqADAANgS4AAMAqgCpApEAAgCpBEoAAgCtApAAAgCoBEwAAgCrApMAAgCqBJ8AAgCsAAEABAS5AAIAqQAEAAoAEAAWABwC/gACAKkDAAACAboEuwACAK0EoQACAKwAAwAIAA4AFAMEAAIAqQMKAAIBugS9AAIArQACAAYADAMOAAIBugS/AAIArQAHABAAGAAeACQAKgAwADYEwQADAKoAqQKWAAIAqQRiAAIArQKVAAIAqARkAAIAqwMUAAIAqgSjAAIArAACAAYADATEAAIArQTCAAIAqgADAAgADgAUA9UAAgCpBMYAAgCtA9MAAgCoAAUADAASABgAHgAkApkAAgCpBHAAAgCtA9kAAgCoBHIAAgCrBHQAAgCqAAIABgAMAyUAAgCpBMgAAgCtAAYADgAUABoAIAAmACwCmwACAKkEHwACAK0CmgACAKgEIQACAKsCnQACAKoEmgACAKwAAQAEBKcAAgCtAAEABAK9AAIAqQACAAYADASrAAIBugSpAAIArQAGAA4AFAAaACAAJgAsAqMAAgCpBDcAAgCtAqIAAgCoBDkAAgCrBDsAAgCqBJwAAgCsAAEABASWAAIAqQABAAQErQACAK0AAQAEBEkAAgCtAAMACAAOABQErwACAKkC6AACAboEsQACAK0AAwAIAA4AFALqAAIAqQLsAAIBugSzAAIArQACAAYADAPhAAIAqQS1AAIArQAFAAwAEgAYAB4AJALyAAIAqQL0AAIBugS3AAIArQSYAAIAqAKqAAIAqgAGAA4AFAAaACAAJgAsAqwAAgCpBEsAAgCtAqsAAgCoBE0AAgCrAq4AAgCqBKAAAgCsAAEABAS6AAIAqQAEAAoAEAAWABwC/wACAKkDAQACAboEvAACAK0EogACAKwAAwAIAA4AFAMFAAIAqQMLAAIBugS+AAIArQACAAYADAMPAAIBugTAAAIArQAGAA4AFAAaACAAJgAsArEAAgCpBGMAAgCtArAAAgCoBGUAAgCrAxUAAgCqBKQAAgCsAAIABgAMBMUAAgCtBMMAAgCqAAMACAAOABQD1gACAKkExwACAK0D1AACAKgABQAMABIAGAAeACQCtAACAKkEcQACAK0D2gACAKgEcwACAKsEdQACAKoAAgAGAAwDJgACAKkEyQACAK0AAQAEAysAAgCpAAEABAMtAAIAqQABAAQDLAACAKkAAQAEAy4AAgCpAAUADAASABgAHgAkAqcAAgCpAqYAAgCoBEcAAgCrAtsAAgCqBJ4AAgCsAAUADAASABgAHgAkBFgAAgCpBGAAAgCtBFoAAgCoBFwAAgCrBF4AAgCqAAUADAASABgAHgAkBFkAAgCpBGEAAgCtBFsAAgCoBF0AAgCrBF8AAgCqAAUADAASABgAHgAkBGYAAgCpBG4AAgCtBGgAAgCoBGoAAgCrBGwAAgCqAAUADAASABgAHgAkBGcAAgCpBG8AAgCtBGkAAgCoBGsAAgCrBG0AAgCqAAEABASlAAIAqQACABEAJQApAAAAKwAtAAUALwA0AAgANgA7AA4APQA+ABQARQBJABYASwBNABsATwBUAB4AVgBbACQAXQBeACoAgQCBACwAgwCDAC0AhgCGAC4AiQCJAC8AjQCNADAAmACbADEA0ADQADUAAQAAAAEACAABAAYAAgABAAIDCAMJAAEAAAABAAgAAgASAAYFBwUIBQkFCgULBQwAAQAGAroCuwLMAs0DTwNYAAEAAAABAAgAAQAGAAEAAQABAXsABAAAAAEACAABAEAAAQAIAAIABgAOAb4AAwBKAE0BvAACAE0ABAAAAAEACAABABwAAQAIAAIABgAOAb8AAwBKAFABvQACAFAAAQABAEoABAAAAAEACAABACoAAwAMABYAIAABAAQBuwACAEoAAQAEAcEAAgBYAAEABAHAAAIAWAABAAMASgBXAJUAAQAAAAEACAABAAYB3gABAAEASwABAAAAAQAIAAEABgFvAAEAAQC7AAEAAAABAAgAAQAGAfUAAQABADYAAQAAAAEACAACABwAAgIsAi0AAQAAAAEACAACAAoAAgIuAi8AAQACAC8ATwABAAAAAQAIAAIAHgAMAkUCRwJGAkgCSQJnAmgCaQJqAmsCbAJtAAEADAAnACgAKwAzADUARgBHAEgASwBTAFQAVQABAAAAAQAIAAIADAADAm4CbwJvAAEAAwBJAEsCagABAAAAAQAIAAIALgAUAloCXgJYAlUCVwJWAlsCWQJdAlwCTwJKAksCTAJNAk4AGgAcAlMCZQACAAQAFAAdAAACZgJmAAoCcAJwAAsEjQSUAAwAAQAAAAEACAACAC4AFASUAnAEjQSOBI8EkASRAmYEkgSTAkwCTgJNAksCTwJlABoCUwAcAkoAAgACABQAHQAAAlUCXgAKAAEAAAABAAgAAgAuABQCWwJdAl4CWAJVAlcCVgJZAlwCWgAbABUAFgAXABgAGQAaABwAHQAUAAEAFAAaABwCSgJLAkwCTQJOAk8CUwJlAmYCcASNBI4EjwSQBJEEkgSTBJQAAQAAAAEACAACAC4AFASRBJICcASNBI4EjwSQAmYEkwAXABkAGAAWABsAFAAaAB0AHAAVBJQAAgAGABoAGgAAABwAHAABAkoCTwACAlMCUwAIAlUCXgAJAmUCZQATAAEAAAABAAgAAQAGAYEAAQABABMABgAAAAEACAADAAEAEgABAGwAAAABAAAAGAACAAMBlAGUAAABxQHHAAECHwIlAAQAAQAAAAEACAACADwACgHHAcYBxQIfAiACIQIiAiMCJAIlAAEAAAABAAgAAgAaAAoCPgB6AHMAdAI/AkACQQJCAkMCRAACAAEAFAAdAAA=';\r\n\r\n this.addFileToVFS('Roboto-Regular-normal.ttf', font);\r\n this.addFont('Roboto-Regular-normal.ttf', 'Roboto-Regular', 'normal');\r\n };\r\n\r\n jsPDF.API.events.push(['addFonts', callAddRobotoRegularNormalFont]);\r\n\r\n const callAddRobotoBoldNormalFont = function (this: any) {\r\n const font = 'AAEAAAASAQAABAAgR0RFRrRCsIIAAhxIAAACYkdQT1P5bkuGAAIerAAAZS5HU1VC64LkWQACg9wAABWQT1MvMpiusakAAf6QAAAAYGNtYXABd1geAAIECAAAEkZjdnQgK34EtQACGTgAAABIZnBnbV/yGqsAAhZQAAABvGdhc3AACAATAAIcPAAAAAxnbHlmn5ZI2QAAASwAAd6QaGRteICPjqUAAf7wAAAFGGhlYWT819JcAAHp/AAAADZoaGVhCyYK2gAB/mwAAAAkaG10eCecEV0AAeo0AAAUOGxvY2F38/pDAAHf3AAACh5tYXhwBz4DEQAB37wAAAAgbmFtZTXeZBkAAhmAAAACnHBvc3T/bQBkAAIcHAAAACBwcmVwKnY2MAACGAwAAAEpAAUAZAAAAygFsAADAAYACQAMAA8AUACwAEVYsAIvG7ECGD5ZsABFWLAALxuxAAw+WbIEAgAREjmyBQIAERI5sgcCABESObIIAgAREjmwCtyyDAIAERI5sg0CABESObACELAO3DAxISERIQMRAQERAQMhATUBIQMo/TwCxDb+7v66AQzkAgP+/gEC/f0FsPqkBQf9fQJ3+xECeP1eAl6IAl4AAAIAfP/wAb8FsAADAA4APLIEDxAREjmwBBCwAdAAsABFWLADLxuxAxg+WbAARViwCi8bsQoMPlmxBAawCitYIdgb9FmwANCwAC8wMQEjAyEDMhYVFAYjIiY0NgGV8CIBNJpJWVlJSFlZAb8D8ftxVkNCVlaEVwACAEAD2wJPBgAABAAJACayBAoLERI5sAQQsAjQALADL7ICCgMREjmwAi+wB9CwAxCwCNAwMQEDIxEzBQMjETMBCiiiygFFJ6LJBXb+ZQIliv5lAiUAAAIAQAAABJwFsAAbAB8AnrIfICEREjmwHxCwDtAAsABFWLAMLxuxDBg+WbAARViwEC8bsRAYPlmwAEVYsAIvG7ECDD5ZsABFWLAaLxuxGgw+WbIdDAIREjl8sB0vGLEAB7AKK1gh2Bv0WbAE0LAdELAG0LAdELAL0LALL7EIB7AKK1gh2Bv0WbALELAO0LALELAS0LAIELAU0LAdELAW0LAAELAY0LAIELAe0DAxASMDIxMjNSETIzUhEzMDMxMzAzMVIwMzFSMDIwMzEyMCm8FIt0jjAQEy6AEHSbZJwkm3Sdv6MuD+SLdbwTLCAZr+ZgGarAEcrgGg/mABoP5grv7krP5mAkYBHAAAAQBc/ykENwaXAC0AcrIrLi8REjkAsABFWLAKLxuxChg+WbAARViwIS8bsSEMPlmyAiEKERI5sAoQsA3QshEKIRESObAKELEUAbAKK1gh2Bv0WbACELEaAbAKK1gh2Bv0WbAhELAk0LIoIQoREjmwIRCxKwGwCitYIdgb9FkwMQE0LgQ1NDY3NTMVFhYVITQmIyIGFRQeBBUUBgcVIzUmJjUhFBYzMjYDFlvannE/2LOgscj+32NTUlpY75pqONS6n83hASFxalhmAX9SYVJRaY5iqdgS1tkZ9cN4d11STFxgVWuJW6rUE8fGFvfNd39dAAAFAF//7AWQBcUADQAaACgANAA4AIeyNzk6ERI5sDcQsAbQsBTQsDcQsCHQsC/QALA1L7A3L7AARViwAy8bsQMYPlmwAEVYsCUvG7ElDD5ZsAMQsArQsAovsRECsAorWCHYG/RZsAMQsRcCsAorWCHYG/RZsCUQsB7QsB4vsCUQsSwCsAorWCHYG/RZsB4QsTICsAorWCHYG/RZMDETNDYzMhYVFRQGIyImNRcUFjI2NTU0JiMiBhUBNDYzMhYVFRQGIyImNRcUFjMyNTU0JiIGFQUnARdfro2Prq6Njq/ARXBCQjo3RAH4sIyOr6yPkK7ASDZ6RHBE/f6NAseNBJiGp6WNSIekpYwGPElKPko8SklB/NGHpaOPSIalpokEN06HTDxJST/1TARyTAADAEf/7AUoBcQAHAAlADAAdLIPMTIREjmwDxCwHtCwDxCwKtAAsABFWLAJLxuxCRg+WbAARViwFi8bsRYMPlmwAEVYsBovG7EaDD5ZshAJFhESObISGgkREjmxHQGwCitYIdgb9FmyIAkWERI5sigJFhESObAJELEuAbAKK1gh2Bv0WTAxEzQ2NyYmNTQ2MzIWFRQHBxM2NTMQBxchJwYjIiQlMjcBBwYVFBYDFBc3NjY0JiMiBkdxl0FK17aj0bBw+zv2g9r+uEuh0dj+/AHqaF3+4RVZbxFYTTstSjo+SwGIZaxpV5lTqtXCka6FUf7cdIz+5LD9VmrjBToBTA9MZ1dtA3VLcjMmSGRKUAABAD8D2QETBgAABAAXsgEFBhESOQCwAy+yAgUDERI5sAIvMDEBAyMRMwETHbfUBW3+bAInAAABAHz+OQKnBlAAEQAQsgcSExESOQCwDS+wBC8wMRM0EhI3FwYCERUQEhcHJgICJ3x67os4kqSilDiI63wEAlDlAZ4BPz6cbP48/tIf/tH+OnCZPQE1AZTcAAABACj+OQJhBlAAEQAQsggSExESOQCwDS+wBC8wMQEUAgIHJzYSEzUQAic3FhISFwJhgvSLOI6kA6OSOIjxhQMCOeL+Xv7APJlrAb4BIjUBKwHIcpk7/sr+ZN0AAAEAGwI8A5MFsAAOACAAsABFWLAELxuxBBg+WbAA0BmwAC8YsAnQGbAJLxgwMQElNwUDMwMlFwUTBwMDJwFV/sY7ATcUxBQBLzv+wNKftrSfA8JZtX0BXf6ce7dZ/vZxAST+5mwAAAEAOQCSBB8EtgALABsAsAkvsADQsAkQsQYBsAorWCHYG/RZsAPQMDEBIREhESERIREhESECtgFp/pf+7f6WAWoBEwMv/vv+aAGYAQUBhwAAAQAj/pMBgAD2AAkAH7IJCgsREjkAsAovsQUGsAorWCHYG/RZsADQsAAvMDETJzc2NzUzBwYGupckQwL0AQFu/pNPQXp54Mhv4gABAG4B+wKhAuQAAwASALACL7EBAbAKK1gh2Bv0WTAxASE1IQKh/c0CMwH76QAAAQB+//UBxQEpAAsAI7IDDA0REjkAsABFWLAJLxuxCQw+WbEDBrAKK1gh2Bv0WTAxNzQ2MzIWFRQGIyImfl1GR11cSEdcjkVWVkVEVVUAAf/z/4MC4gWwAAMAEwCwAC+wAEVYsAIvG7ECGD5ZMDEXIwEzytcCGNd9Bi0AAAIAX//sBDcFxAAMABoASLIDGxwREjmwAxCwENAAsABFWLAJLxuxCRg+WbAARViwAy8bsQMMPlmwCRCxEAGwCitYIdgb9FmwAxCxFwGwCitYIdgb9FkwMQEQAiMiAgMREBIgEhMlNCYjIgYHERQWMzI2NwQ3+vHu/AP9Adz8A/7fY2lmYQNha2peAgJa/tL+wAE6ASUBDAExATz+x/7bGrWlnaf+nrKtpqsAAQCnAAADIQWyAAYAOgCwAEVYsAUvG7EFGD5ZsABFWLAALxuxAAw+WbIEAAUREjmwBC+xAwGwCitYIdgb9FmyAgMFERI5MDEhIREFNSUzAyH+3/6nAlsfBFpr69gAAAEARgAABEkFxAAZAFuyERobERI5ALAARViwES8bsREYPlmwAEVYsAAvG7EADD5ZsRgBsAorWCHYG/RZsgIAGBESObIDEQAREjmwERCxCQGwCitYIdgb9FmyDAARERI5shYRABESOTAxISE1ATY2NTQmIyIGFSE0NjYzMhYVFAYHASEESfwaAddhXWJbYnH+3n/ok+H5cIj+tQJyxgH2ap5HYW+HboXcfdjFbOCV/qMAAQBA/+wEMwXEACgAkbIHKSoREjkAsABFWLAPLxuxDxg+WbAARViwGy8bsRsMPlmyAQ8bERI5sAEvtG8BfwECXbR/AY8BAnG03wHvAQJdsv8BAXG0OQFJAQJdsA8QsQcBsAorWCHYG/RZsgoPGxESObABELEnAbAKK1gh2Bv0WbIVJwEREjmyHxsPERI5sBsQsSIBsAorWCHYG/RZMDEBMzI2NTQmIyIGFSE0NjYzMgQVFAYHFhYVFAQjIiQ1IRQWMzI2NTQjIwGJmm5qaVxTcP7fe92F5wEGemN7ef7l6dr+6wEhe1pndfCZA1huW1hiW0lytWbdwmSoLSyweMLq5r1SaG1a2gAAAgA3AAAEXwWwAAoADgBKALAARViwCS8bsQkYPlmwAEVYsAQvG7EEDD5ZsgEJBBESObABL7ECAbAKK1gh2Bv0WbAG0LABELAL0LIIBgsREjmyDQkEERI5MDEBMxUjESERIScBIQEhEQcDuqWl/t/9qw0CXwEk/Z0BQhMCJOn+xQE7tgO//HQCAiEAAQBp/+wEQgWwAB8AbbIWICEREjkAsABFWLABLxuxARg+WbAARViwDi8bsQ4MPlmwARCxAwGwCitYIdgb9FmyBwEOERI5sAcvsRwBsAorWCHYG/RZsgUHHBESObAOELEWAbAKK1gh2Bv0WbITFhwREjmyHxwWERI5MDETEyEVIQM2MzISFRQGBiMiJiYnIRYWMzI2NTQmIyIHB45UAzD9vSRndNDsd96XhOKDBAEeCW1YYmp6cGdAHALMAuTx/sc3/v7ojd97a8J8W2WNgXyENhoAAgBk/+wETwW/ABYAIwBeshckJRESObAXELAO0ACwAEVYsAAvG7EAGD5ZsABFWLAOLxuxDgw+WbAAELEBAbAKK1gh2Bv0WbIHAA4REjmwBy+xFwGwCitYIdgb9FmwDhCxHgGwCitYIdgb9FkwMQEVIwYGBzYzMhIVFAYGIyIAETU0EiQ3AyIGBxUUFjMyNjU0JgNzHMTvGHSxvuB74Y7m/uWzAU/d6kZyG3JnXXN0Bb/uA8awdv7w3o7mgAFAAQto7QFrxwH9J0k8WJGjk3V3kgAAAQA9AAAEQQWwAAYAMwCwAEVYsAUvG7EFGD5ZsABFWLABLxuxAQw+WbAFELEDAbAKK1gh2Bv0WbIAAwUREjkwMQEBIQEhNSEEQf3N/s8CNP0sBAQFDvryBMbqAAADAF//7AQ3BcQAFgAiAC0AgLIULi8REjmwFBCwGtCwFBCwJtAAsABFWLAULxuxFBg+WbAARViwCS8bsQkMPlmyKwkUERI5sCsvtG8rfysCXbTfK+8rAl2xGgGwCitYIdgb9FmyAxorERI5sg4rGhESObAJELEgAbAKK1gh2Bv0WbAUELEmAbAKK1gh2Bv0WTAxARQGBxYWFRQEICQ1NDY3JiY1NDYzMhYBNCYjIgYVFBYzMjYDNCYjIgYVFBYyNgQYal1qfP74/jr+9nxpXWn41dT5/v1uXVxubGBeax5aUlFaWqRZBC1qpDEzs3nC4eLBebQyMaRqut3b/LtfcnFgXXJuAtxVZ2RYV2pqAAACAFb/8gQsBcQAFQAiAGCyFiMkERI5sBYQsAnQALAARViwCS8bsQkYPlmwAEVYsBIvG7ESDD5ZshYJEhESOXywFi8YsQIBsAorWCHYG/RZsBIQsRMBsAorWCHYG/RZsAkQsR0BsAorWCHYG/RZMDEBBiMiAjU0NjYzMhYSFxUQAAUHNTckAzI2NzU0JiMiBhUUFgMHcZfB6H3gjJDgfAH+lv60R0ABeaJGZRpwXldwbQJGbwEJ4Y/vhZD+8q5r/pT+YA4B8QERAb9IM3eTop94d5kA//8Aff/1AcQEXAAmABL/AAEHABL//wMzAAYAsA8vMDH//wA5/pMBswRcACcAEv/uAzMBBgAQFgAABgCwAy8wMQABADYAiQOTBE8ABgAWALAARViwBS8bsQUUPlmwAtCwAi8wMQEFEQE1AREBWQI6/KMDXQJqyf7oAW3sAW3+6AAAAgCIATkEBgPWAAMABwAnALAHL7AD0LADL7EAAbAKK1gh2Bv0WbAHELEEAbAKK1gh2Bv0WTAxASE1IREhNSEEBvyCA378ggN+Aurs/WPsAAABAHgAiAPfBE4ABgAWALAARViwAi8bsQIUPlmwBdCwBS8wMQElEQEVARECvf27A2f8mQJtywEW/pPr/pIBFwAAAgAt//QDsgXEABgAIgBgsgcjJBESObAHELAc0ACwAEVYsA4vG7EOGD5ZsABFWLAhLxuxIQw+WbEbBrAKK1gh2Bv0WbAA0LAAL7IDAA4REjmwDhCxBwGwCitYIdgb9FmyCg4AERI5shUADhESOTAxATQ+AjU0IyIGByE2NjMyFhUUBgcHBgcHATQ2MhYVFAYiJgFbRLU8nEpZAv7eAvPS1OpMX1FMCwT+41uOW1mSWQG/jKahZTipW1C/2M27VZdcTUliPf7NQ1dXQ0JWVgACAEv+OwbgBYgANQBBAH6yOkJDERI5sDoQsCPQALAARViwCC8bsQgMPlmwA9CwCBCxOQewCitYIdgb9FmyBgg5ERI5sAgQsA/QsA8vsDkQsBbQsA8QsDLQsDIvsRwHsAorWCHYG/RZsAgQsCrQsCovsSMHsAorWCHYG/RZsA8QsT8HsAorWCHYG/RZMDEBAgIjIiYnBiMiJjc2EjYzMhcXAwYWMzI2NxIAISIEAgcCACEyNjcXBgYjICQCExISJDMyBBIBBhYzMjY3EyYjIgYG1Qvnw1Z9IGShkqAUEoPIdI9lPzMKNzxcfAYR/sX+y8H+0q4LEAE8ATtTtkImPc9p/vj+jLcMDOQBiff7AWq0/AgLREwxWB0qJylzfwIY/wD+00pFjPbKpQEBikIr/b5PVNeuAV0Bd8T+l+n+nv59JR+aKDHVAZ8BIAEUAbbv1/5w/o2EiVZRAdkNxAACAAcAAAVcBbAABwAKAEcAsABFWLAELxuxBBg+WbAARViwAi8bsQIMPlmwAEVYsAYvG7EGDD5ZsgkEAhESObAJL7EAAbAKK1gh2Bv0WbIKBAIREjkwMQEhAyEBIQEhASEDA7j98mT+wQIeARYCIf7B/d4BbLcBLP7UBbD6UAIfAiEAAwCCAAAEvAWwAA4AFgAeAJayGB8gERI5sBgQsALQsBgQsBHQALAARViwAS8bsQEYPlmwAEVYsAAvG7EADD5ZshcAARESObAXL7TfF+8XAl20fxePFwJxsh8XAXKy/xcBcbQPFx8XAnG0bxd/FwJdso8XAXKxDwGwCitYIdgb9FmyCA8XERI5sAAQsRABsAorWCHYG/RZsAEQsR0BsAorWCHYG/RZMDEzESEgBBUUBgcWFhUUBAcBESEyNjU0JyUzNjU0JiMjggH+AQkBEm5icIH+9Pj+9gEBanfP/u3e43N80gWwy8RroyYcqnvS2AICev53ZVnIA9QEsWNXAAABAFb/7AT7BcQAHABHALAARViwCy8bsQsYPlmwAEVYsAMvG7EDDD5ZsAsQsA/QsAsQsRIBsAorWCHYG/RZsAMQsRkBsAorWCHYG/RZsAMQsBzQMDEBBgAhIAARNTQSJDMyABchJiYjIgYHFRQWMzI2NwT5Ef7H/wD+6P6/lAETtvwBNBj+1AuHipaVAo+ai4kKAeXr/vIBeQFJWdIBQKv+8vSNf9fibuzaf4UAAgCCAAAE2wWwAAsAFQA7ALAARViwAS8bsQEYPlmwAEVYsAAvG7EADD5ZsAEQsQwBsAorWCHYG/RZsAAQsQ0BsAorWCHYG/RZMDEzESEyBBIVFRQCBAcDETMyNjc1NCYjggHAwAEvqqf+0L+XkbC6ArixBbCt/sHLQ8v+xK4BBL38NObWTd7lAAEAggAABFIFsAALAFgAsABFWLAGLxuxBhg+WbAARViwBC8bsQQMPlmyCwQGERI5sAsvtDoLSgsCXbEAAbAKK1gh2Bv0WbAEELECAbAKK1gh2Bv0WbAGELEIAbAKK1gh2Bv0WTAxASERIRUhESEVIREhA+79wAKk/DADzv1eAkACd/568QWw8/6lAAEAggAABDYFsAAJAFMAsABFWLAELxuxBBg+WbAARViwAi8bsQIMPlmyCQIEERI5sAkvsp8JAV20bAl8CQJdskkJAV2xAAGwCitYIdgb9FmwBBCxBgGwCitYIdgb9FkwMQEhESERIRUhESED7v3A/tQDtP14AkACU/2tBbDz/ogAAQBe/+wFAgXEACAAc7IMISIREjkAsABFWLAMLxuxDBg+WbAARViwAy8bsQMMPlmyHwwDERI5sB8vtN8f7x8CXbJfHwFdsh8fAXGyEB8MERI5sAwQsRMBsAorWCHYG/RZsAMQsRoBsAorWCHYG/RZsB8QsR4BsAorWCHYG/RZMDElBgQjIiQCJzU0EiQzIAQXISYmIyIGBxUUFjMyNzUhNSEFAlH+2LS9/uObApMBFboBAwEkG/7cFIl4maABrqipSP7vAj24YWulATrUY9oBP6n37H105uNd5epI+90AAQCCAAAFIwWwAAsATQCwAEVYsAYvG7EGGD5ZsABFWLAKLxuxChg+WbAARViwAC8bsQAMPlmwAEVYsAQvG7EEDD5ZsgkKABESObAJL7ECAbAKK1gh2Bv0WTAxISERIREhESERIREhBSP+1P23/tQBLAJJASwCcP2QBbD9sgJOAAABAJUAAAHBBbAAAwAdALAARViwAi8bsQIYPlmwAEVYsAAvG7EADD5ZMDEhIREhAcH+1AEsBbAAAAEAKP/sA/kFsAAQADCyBhESERI5ALAARViwAC8bsQAYPlmwAEVYsAYvG7EGDD5ZsQ0BsAorWCHYG/RZMDEBIREUBgYjIiQ1IRQWMzI2NQLNASx74I3n/v4BLlphVmYFsPwQi9V069drZnZtAAEAggAABSUFsAAMAEyyAA0OERI5ALAARViwBC8bsQQYPlmwAEVYsAgvG7EIGD5ZsABFWLACLxuxAgw+WbAARViwCy8bsQsMPlmyAAQCERI5sgYEAhESOTAxAQcRIREhETcBIQEBIQJKnP7UASyEAXMBcf37AhT+mwJIqP5gBbD9bLUB3/15/NcAAAEAggAABCsFsAAFACkAsABFWLAELxuxBBg+WbAARViwAi8bsQIMPlmxAAGwCitYIdgb9FkwMSUhFSERIQGuAn38VwEs8fEFsAAAAQCCAAAGfgWwAA4AWQCwAEVYsAAvG7EAGD5ZsABFWLACLxuxAhg+WbAARViwBC8bsQQMPlmwAEVYsAgvG7EIDD5ZsABFWLAMLxuxDAw+WbIBAAQREjmyBwAEERI5sgoABBESOTAxCQIhESEREwEjARMRIRECCgF2AXQBiv7THv53zv54Hv7UBbD74AQg+lABjgKv+8MEPP1S/nIFsAABAIIAAAUiBbAACQBMsgEKCxESOQCwAEVYsAUvG7EFGD5ZsABFWLAILxuxCBg+WbAARViwAC8bsQAMPlmwAEVYsAMvG7EDDD5ZsgIFABESObIHBQAREjkwMSEhAREhESEBESEFIv7U/bj+1AEsAkkBKwO+/EIFsPxAA8AAAgBW/+wFLgXEABAAHgBIsgQfIBESObAEELAU0ACwAEVYsAwvG7EMGD5ZsABFWLAELxuxBAw+WbAMELEUAbAKK1gh2Bv0WbAEELEbAbAKK1gh2Bv0WTAxARQCBCMiJAInNTQSJCAEEhUlNCYjIgYHFRQWMzI2NwUumP7lt7X+5JwBmwEbAWwBG5v+0KSYl6QBpJqXogECt9f+vLCuAUPSSNcBR6+v/rnWAeXu6+NH3/bt4wAAAgCCAAAE3QWwAAsAFABPsgsVFhESObALELAN0ACwAEVYsAMvG7EDGD5ZsABFWLABLxuxAQw+WbIMAwEREjmwDC+xAAGwCitYIdgb9FmwAxCxEwGwCitYIdgb9FkwMQERIREhMhYWFRQEISUhMjY1NCYnIQGu/tQCOKT5hv7b/v3++QEMd31+b/7tAgH9/wWweN2N1vfzcGhrhAIAAgBU/vwFLAXEABQAIgBIsggjJBESObAIELAf0ACwAEVYsBAvG7EQGD5ZsABFWLAILxuxCAw+WbAQELEYAbAKK1gh2Bv0WbAIELEfAbAKK1gh2Bv0WTAxARQCBxcHJQYjIiQCJzU0EiQgBBIVJTQmIyIGBxUUFjMyNjcFLIR18r/+yjU5tf7knAGbARsBbAEbm/7QpJiXpAGkmpeiAQK3zP7TW76p+QmuAUPSSNcBR6+v/rnWAeXu6+NH3/bt4wAAAgCCAAAE8AWwAA4AFwBjsgUYGRESObAFELAW0ACwAEVYsAQvG7EEGD5ZsABFWLACLxuxAgw+WbAARViwDS8bsQ0MPlmyEAQCERI5sBAvsQABsAorWCHYG/RZsgsABBESObAEELEWAbAKK1gh2Bv0WTAxASMRIREhIAQVFAYHARUhATMyNjU0JiMjAp3v/tQCHQECARiBgwE7/r7+APJxfHV58QIV/esFsObSlcc7/a0OAwhzZWd2AAEARf/sBKIFxAAnAGayEigpERI5ALAARViwCi8bsQoYPlmwAEVYsB4vG7EeDD5ZsgMeChESObIPCh4REjmwChCxEgGwCitYIdgb9FmwAxCxFwGwCitYIdgb9FmyIx4KERI5sB4QsSUBsAorWCHYG/RZMDEBNCYkJyY1NDY2MzIWFhUhNCYjIgYVFBYXBBYVFAQjIiQmNSEUITI2A3V4/shb+IX5m5z0h/7UfnJueo+LAQDq/uLyqP7skQEtASBreAF+VVtlMYbjdrlocc6DZG9dTEdgKk3kqr3Xe9aN8VcAAQAoAAAEygWwAAcALwCwAEVYsAYvG7EGGD5ZsABFWLACLxuxAgw+WbAGELEAAbAKK1gh2Bv0WbAE0DAxASERIREhNSEEyv5C/tT+SASiBL37QwS98wABAHT/7ATQBbAAEAA9sgQREhESOQCwAEVYsAAvG7EAGD5ZsABFWLAILxuxCBg+WbAARViwBC8bsQQMPlmxDQGwCitYIdgb9FkwMQERFAAhIgAnESERFBYzMhMRBND+1f79//7UAwEsiXn9BAWw/EHv/uoBDuwDyvw/j4MBCgPJAAEABwAABTQFsAAGADiyAAcIERI5ALAARViwAS8bsQEYPlmwAEVYsAUvG7EFGD5ZsABFWLADLxuxAww+WbIAAQMREjkwMQEBIQEhASECnAFKAU7+Bf7H/gcBTQFpBEf6UAWwAAABACMAAAbfBbAADABgsgUNDhESOQCwAEVYsAEvG7EBGD5ZsABFWLAILxuxCBg+WbAARViwCy8bsQsYPlmwAEVYsAMvG7EDDD5ZsABFWLAGLxuxBgw+WbIAAQMREjmyBQEDERI5sgoBAxESOTAxARMhASEDAyEBIRMTMwTwxAEr/r3+0u3t/tL+vQErxfD+AaQEDPpQA878MgWw+/YECgAAAQAWAAAFAAWwAAsAUwCwAEVYsAEvG7EBGD5ZsABFWLAKLxuxChg+WbAARViwBC8bsQQMPlmwAEVYsAcvG7EHDD5ZsgABBBESObIGAQQREjmyAwAGERI5sgkGABESOTAxAQEhAQEhAQEhAQEhAosBEQFZ/lgBs/6j/uj+6P6jAbP+WAFZA7oB9v0u/SIB/v4CAt4C0gAAAQACAAAE7wWwAAgAMQCwAEVYsAEvG7EBGD5ZsABFWLAHLxuxBxg+WbAARViwBC8bsQQMPlmyAAEEERI5MDEBASEBESERASECeAEvAUj+Iv7P/iIBSQMgApD8YP3wAhADoAABAEkAAASeBbAACQBGALAARViwBy8bsQcYPlmwAEVYsAIvG7ECDD5ZsQABsAorWCHYG/RZsgQAAhESObAHELEFAbAKK1gh2Bv0WbIJBQcREjkwMSUhFSE1ASE1IRUBwALe+6sC0P0xBETx8bAEDfOsAAABAHj+rQIoBp4ABwAkALAEL7AHL7EAAbAKK1gh2Bv0WbAEELEDAbAKK1gh2Bv0WTAxASMRMxUhESECKI6O/lABsAW/+c3fB/EAAAEAAP+DA4cFsAADABMAsAIvsABFWLAALxuxABg+WTAxESEBIQEnAmD+2AWw+dMAAAEADf6tAb0GngAHACcAsAIvsAEvsAIQsQUBsAorWCHYG/RZsAEQsQYBsAorWCHYG/RZMDETIREhNTMRIw0BsP5Qj48GnvgP3wYzAAABACwC2QNUBbAABgAnsgAHCBESOQCwAEVYsAMvG7EDGD5ZsADQsgEHAxESObABL7AF0DAxAQMjATMBIwHAruYBK9IBK+UEov43Atf9KQABAAH/HgOQAAAAAwAaALAARViwAy8bsQMMPlmwALAKK1jYG9xZMDEFITUhA5D8cQOP4uIAAQA0BMoCNQYAAAMAFgCwAS+yDwEBXbAC0LACL7IPAgFdMDEBIwEhAjXt/uwBOwTKATYAAAIARP/sBAYETgAeACkAeQCwAEVYsBcvG7EXFD5ZsABFWLAELxuxBAw+WbAARViwAC8bsQAMPlmyAgQXERI5sgsXABESObALL7KPCwFdsBcQsQ8BsAorWCHYG/RZshILFxESOXywEi8YsAQQsR8BsAorWCHYG/RZsAsQsSMIsAorWCHYG/RZMDEhJicGIyImNTQ2NzM1NCYjIgYVITQ2NjMyFhURFhcVJTI2NzUjIgcHFBYC4hQJaaif0f/xhU1TSVP+33TUhMjrASr97UBsGmzZDgFMJzp1uIysuAE+S1pGPV6gW8m2/iuaTxHJOTC6lhE2RgACAG//7AQ+BgAADwAbAGayExwdERI5sBMQsAvQALAJL7AARViwDC8bsQwUPlmwAEVYsAMvG7EDDD5ZsABFWLAGLxuxBgw+WbIFDAYREjmyCgwGERI5sAwQsRMBsAorWCHYG/RZsAMQsRgBsAorWCHYG/RZMDEBEAIjIicHIREhETYzMhIRJTQmIyIHERYzMjc2BD7ex7BpDf78ASFko8bh/t9oZ4o0NYuMLBUCE/78/t2HcwYA/dl1/t3++AWkl3H+VXKKQgABAEL/7AP2BE4AHABNshYdHhESOQCwAEVYsA8vG7EPFD5ZsABFWLAILxuxCAw+WbEAAbAKK1gh2Bv0WbIDCA8REjmyEw8IERI5sA8QsRYBsAorWCHYG/RZMDElMjY3IQ4CIyIAETU0ADMyFhchJiYjIgYVFRQWAjFQZAIBDwF2zXzo/vQBCujL9QL+8QJkUmVnZtVYSW63ZQEnAQQT+gEq58BUaZOlHqeSAAIAQv/sBBEGAAAOABgAY7IXGRoREjmwFxCwBNAAsAYvsABFWLADLxuxAxQ+WbAARViwCC8bsQgMPlmwAEVYsAwvG7EMDD5ZsgUDCBESObIKAwgREjmxEgGwCitYIdgb9FmwAxCxFwGwCitYIdgb9FkwMRM0EjMyFxEhESEnBiMiAiUUFjMyNxEmIyJC48WeZwEi/vsObKq/5wEhamWGNzaF0QIl/QEsdgIo+gBzhwEt95iicQGrcQACAEj/7AQeBE4AFQAdAHayFh4fERI5sBYQsAjQALAARViwCC8bsQgUPlmwAEVYsAAvG7EADD5ZshoIABESObAaL7QfGi8aAnGyjxoBXbJfGgFxsQwIsAorWCHYG/RZsAAQsRABsAorWCHYG/RZshIADBESObAIELEWAbAKK1gh2Bv0WTAxBSIANTU0EjYzMhIRFSEWFjMyNxcGBgMiBgchNSYmAmHu/tV+55Te//1PDo1sp16OQd6oVmsPAZICZBQBJPMcowEBi/7o/v92aoB5n1xnA3h0bBdgaQAAAQAdAAAC3gYVABQAZbIHFRYREjkAsABFWLAILxuxCBo+WbAARViwAy8bsQMUPlmwAEVYsBAvG7EQFD5ZsABFWLAALxuxAAw+WbADELEBCbAKK1gh2Bv0WbAIELENAbAKK1gh2Bv0WbABELAS0LAT0DAxMxEjNTM1NDYzMhcHJiMiFRUzFSMRvqGh0bw8VwMkNKPX1wNm1Fy2yRTgCZlX1PyaAAACAEX+VgQiBE4AGwAmAIOyJCcoERI5sCQQsAzQALAARViwAy8bsQMUPlmwAEVYsAYvG7EGFD5ZsABFWLAYLxuxGAw+WbAARViwDC8bsQwOPlmyBQYYERI5shAMGBESObESAbAKK1gh2Bv0WbIWBhgREjmwGBCxHwGwCitYIdgb9FmwAxCxJAGwCitYIdgb9FkwMRM0EjMyFzchERQGBiMiJic3FjMyNjU1BiMiAjUFFBYzMjcRJiMiBkXtybJjDAEGgeqdd+I6gGyac4Bko8PxASF2Z4Q5OoFodwIl+QEwemb76o7Sbl9LsHl7cTpxATH8CZOnYwHHY6oAAQBoAAAEDwYAABAASrIKERIREjkAsBAvsABFWLACLxuxAhQ+WbAARViwBS8bsQUMPlmwAEVYsA0vG7ENDD5ZsgACBRESObACELEKAbAKK1gh2Bv0WTAxATYzIBMRIRE0JiMiBxEhESEBiXOuAWAF/t9QXX85/t8BIQPEiv5n/UsCrV1ZYvz/BgAAAgBtAAABsQXnAAMADgA/sgcPEBESObAHELAA0ACwAEVYsAIvG7ECFD5ZsABFWLAALxuxAAw+WbACELAN0LANL7EGBrAKK1gh2Bv0WTAxISERIQE0NjMyFhUUBiImAaD+3gEi/s1XS0pYWZJZBDoBGEFUVEFCVFQAAv+h/ksBrAXnAAwAFgBLsgMXGBESObADELAU0ACwAEVYsAAvG7EAFD5ZsABFWLAELxuxBA4+WbEJAbAKK1gh2Bv0WbAAELAU0LAUL7EPBrAKK1gh2Bv0WTAxAREUBiMiJzUWMzI1EQM0NjIWFRQGIiYBob6zS0Q0J4MXV5ZXWZJZBDr7i7PHEeUJiwR3ARhBVFRBQlRUAAABAG8AAARaBgAADABFALAARViwBC8bsQQaPlmwAEVYsAgvG7EIFD5ZsABFWLACLxuxAgw+WbAARViwCy8bsQsMPlmyAAgCERI5sgYIAhESOTAxAQcRIREhETcBIQEBIQH4aP7fASE4ARUBW/55Aan+tAGyaP62BgD8rUgBRf49/YkAAQB+AAABoAYAAAMAHQCwAEVYsAIvG7ECGj5ZsABFWLAALxuxAAw+WTAxISERIQGg/t4BIgYAAAABAG8AAAZ+BE4AHQB4sgQeHxESOQCwAEVYsAMvG7EDFD5ZsABFWLAHLxuxBxQ+WbAARViwAC8bsQAUPlmwAEVYsAsvG7ELDD5ZsABFWLATLxuxEww+WbAARViwGy8bsRsMPlmyAQcLERI5sgUHCxESObAHELEQAbAKK1gh2Bv0WbAY0DAxARc2MzIXNjMyFhURIRE0JiMiBxMhETQmIyIHESERAX4Jc8TRTnLTsKz+3khbgjIB/t9KWXs3/t8EOnmNpaXNzv1NArJcVXz9GQKxXlRm/QMEOgABAGkAAAQPBE4AEQBUsgwSExESOQCwAEVYsAMvG7EDFD5ZsABFWLAALxuxABQ+WbAARViwBy8bsQcMPlmwAEVYsA8vG7EPDD5ZsgEABxESObADELEMAbAKK1gh2Bv0WTAxARc2MzIWFxEhETQmIyIHESERAXkJdMOsqAL+31Bdej3+3wQ6fZHKyf1FArRcU2j9BQQ6AAACAEL/7ARDBE4ADQAZAEWyERobERI5sBEQsATQALAARViwBC8bsQQUPlmwAEVYsAsvG7ELDD5ZsREBsAorWCHYG/RZsAQQsRcBsAorWCHYG/RZMDETNDY2MzIAFxcUACAAEQUUFjMyNjU0JiMiBkJ86ZrbARUQAv7q/iz+6QEhdGxpdnZranQCJ6H8iv705kr5/tMBLAECCJqjobGXpqUAAgBv/mAEPQROAA8AGQBwshMaGxESObATELAE0ACwAEVYsAwvG7EMFD5ZsABFWLAILxuxCBQ+WbAARViwBi8bsQYOPlmwAEVYsAMvG7EDDD5ZsgUIAxESObIKCAMREjmwDBCxEwGwCitYIdgb9FmwAxCxGAGwCitYIdgb9FkwMQEUAiMiJxEhESEXNjMyEhElNCYjIgcRFjMyBD3jwaRl/t8BDAppqcje/t9rZogzNYjPAhP6/tNy/gIF2mp+/tj+/AaXpGj+RWsAAAIAQv5gBBEETgAOABkAbbIXGhsREjmwFxCwC9AAsABFWLADLxuxAxQ+WbAARViwBi8bsQYUPlmwAEVYsAgvG7EIDj5ZsABFWLAMLxuxDAw+WbIFBgwREjmyCgYMERI5sRIBsAorWCHYG/RZsAMQsRcBsAorWCHYG/RZMDETNBIzMhc3MxEhEQYjIgIlFBYzMjcRJiMiBkLjxq5nE/7+3mSiweYBIW1jhTc2hGRuAif/ASiFcfomAf1xASz6m6JqAb9mogABAG8AAALTBE4ADQBHsgQODxESOQCwAEVYsAsvG7ELFD5ZsABFWLAILxuxCBQ+WbAARViwBS8bsQUMPlmwCxCxAgGwCitYIdgb9FmyCQsFERI5MDEBJiMiBxEhESEXNjMyFwLPOy2kM/7fAREIV5owKgMrCG/9PAQ6gZUNAAABADj/7APSBE4AJQBdshsmJxESOQCwAEVYsAgvG7EIFD5ZsABFWLAbLxuxGww+WbICGwgREjmyCwgbERI5sAgQsQ8JsAorWCHYG/RZsAIQsBXQsh8IGxESObAbELEjCbAKK1gh2Bv0WTAxATQmJyQ1NDYzMhYVITQmIyIGFRQWFhcWFRQGIyImJjUhFhYzMjYCuWl0/n7vwc73/t9QVUlQW9hK5f7JiNN4ARIEallTVQErNT0YUfeQwcKbPlFCMzA7KxtUz5S3YaliTVI/AAEACv/sAo0FRAAUAFSyABUWERI5ALAARViwEy8bsRMUPlmwAEVYsA0vG7ENDD5ZsBMQsAHQsADQsAAvsAEQsQQJsAorWCHYG/RZsA0QsQgBsAorWCHYG/RZsAQQsBDQMDEBETMVIxEUFjMyNxUGIyADESM1MxEBybm5LkEwJVVa/tAGnp4FRP721P3kPDQH2xoBMwJH1AEKAAABAGj/7AQPBDoAEABUsgoREhESOQCwAEVYsAYvG7EGFD5ZsABFWLANLxuxDRQ+WbAARViwAi8bsQIMPlmwAEVYsBAvG7EQDD5ZsgANAhESObACELEKAbAKK1gh2Bv0WTAxJQYjIiYnESERFDMyNxEhESEC92u9rrcCASGakzcBIv7wboLIwQLF/UWpZgL++8YAAAEADQAAA/sEOgAGADiyAAcIERI5ALAARViwAS8bsQEUPlmwAEVYsAUvG7EFFD5ZsABFWLADLxuxAww+WbIABQMREjkwMQETIQEhASECBMkBLv6T/uz+kwEuAWEC2fvGBDoAAQAcAAAFwQQ6AAwAYLIFDQ4REjkAsABFWLABLxuxARQ+WbAARViwCC8bsQgUPlmwAEVYsAsvG7ELFD5ZsABFWLADLxuxAww+WbAARViwBi8bsQYMPlmyAAsDERI5sgULAxESObIKCwMREjkwMQETIQEjAwMjASETEzMEHI4BF/7s8s3N8f7sAReNxtEBiQKx+8YCqf1XBDr9UAKwAAABABUAAAQDBDoACwBTALAARViwAS8bsQEUPlmwAEVYsAovG7EKFD5ZsABFWLAELxuxBAw+WbAARViwBy8bsQcMPlmyAAoEERI5sgYKBBESObIDAAYREjmyCQYAERI5MDEBEyEBASEDAyEBASECC7YBNf7MAUH+ysHA/skBQf7NATYC9wFD/e792AFU/qwCKAISAAEAA/5LBAEEOgAQAESyABESERI5ALAARViwAS8bsQEUPlmwAEVYsA8vG7EPFD5ZsABFWLAGLxuxBg4+WbIADwYREjmxCgGwCitYIdgb9FkwMQETIQEHBiMiJzUXMjY3NwEhAgPIATb+TRhh3z9BLFJRFyL+hQE3AZkCofseOdQT2wEyOlkEPQABAEoAAAPMBDoACQBGALAARViwBy8bsQcUPlmwAEVYsAIvG7ECDD5ZsQABsAorWCHYG/RZsgQAAhESObAHELEFAbAKK1gh2Bv0WbIJBQcREjkwMSUhFSE1ASE1IRUBuwIR/H4B/f4SA2Pp6bACoOqrAAABADD+mAKCBj0AGAAtshMZGhESOQCwDC+wAC+yBgwAERI5sAYvsQUJsAorWCHYG/RZshMFBhESOTAxASQRNTQjNTI3NTQ2NxcGBgcVFAcWFRUWFwJK/piyrgS0tDhMTgKzswWX/phlAWzH08/H1LnkM6Eci3vS4ltc49TqNAABAK3+8gFcBbAAAwATALAAL7AARViwAi8bsQIYPlkwMQEjETMBXK+v/vIGvgAAAQAi/pgCdAY9ABcALbIFGBkREjkAsAsvsBcvshELFxESObARL7ESCbAKK1gh2Bv0WbIFEhEREjkwMRc2NzU0NyY1NSYnNxYWFxUWMxUiFRUCBSKYBLe3BJg4s7QBBK6yCP6gxjbs1OJYWOfR6TmhMuO418fP0dn+omMAAAEAagF3BMUDOwAVADMAsA4vsBLQsBIvsQMBsAorWCHYG/RZsA4QsQcBsAorWCHYG/RZsAMQsArQsA4QsBXQMDEBFAYjIiYmIyIGFSc0NjMyFhYzMjY1BMW6k0p/pkY6SNe1lk6Ao0M7SwMZuug5n2ROArriPJtqTAAAAgCA/o8BxARNAAMADAAysgYNDhESObAGELAA3ACwAi+wAEVYsAsvG7ELFD5ZsQYGsAorWCHYG/RZsAHQsAEvMDETMxMhARQGIiY0NjIWqvEh/s0BO1yMXFmSWQJ//BAFJUNWVoZWVgABAGP/CwQYBSYAIQBUsgAiIxESOQCwAEVYsBQvG7EUFD5ZsABFWLAKLxuxCgw+WbAH0LEAAbAKK1gh2Bv0WbAKELAD0LAUELAR0LAUELAY0LAUELEbAbAKK1gh2Bv0WTAxJTI2NyEGBgcVIzUmAjU1NBI3NTMVFhYXISYmIyIGBxUUFgJSUGQCARACwZvIu9TSvcijuQL+8AJkUWZmAWfVWEmR0x3q6R4BIOIW2gEiIODhHd6jVmeVoCGokQAAAQBjAAAEiQXDAB8AdLIaICEREjkAsABFWLASLxuxEhg+WbAARViwBS8bsQUMPlmyHRIFERI5sB0vsQABsAorWCHYG/RZsAUQsQMBsAorWCHYG/RZsAfQsAjQsAAQsAvQsAzQsB0QsA7QshYSHRESObASELEZAbAKK1gh2Bv0WTAxARcUByEVITUzNjUnIzUzJzQ2MzIWFSE0JiMiBhUXIRUCNAY+Ao373VxIBaKaB/fP1PL+4VdRQlcJATUCQIt7SfHxEqGc7OPK6uHAVVpiYOPsAAACAFH/5QVDBPEAGwArADuyAiwtERI5sAIQsCDQALAQL7AARViwAi8bsQIMPlmxIAiwCitYIdgb9FmwEBCxKAiwCitYIdgb9FkwMSUGIyInByc3JjU0Nyc3FzYzMhc3FwcWFRQHFwcBFBYWMzI2NjU0JiYjIgYGBDGfysuegY2HZG2QjY6bwcKbkI6Ua2KLjvx5bL9vbr9sbL5vcL5sa39+hJCJnMXMoZOQkXN1lJGXn8rBnI2RAnt2y3V1y3Z3yXR0yQAAAQAKAAAEPwWwABYAcbIAFxgREjkAsABFWLABLxuxARg+WbAARViwCy8bsQsMPlmyAAsBERI5sgcBCxESObAHL7AD0LADL7EFB7AKK1gh2Bv0WbAHELEJB7AKK1gh2Bv0WbAN0LAHELAP0LAFELAR0LADELAT0LABELAV0DAxARMhATMVIRUhFSERIREhNSE1ITUzASECJuABOf6+2v7gASD+4P7U/s4BMv7O9P69ATsDfAI0/Tavc67+6gEWrnOvAsoAAAIAgP7yAYQFsAADAAcAGACwAC+wAEVYsAYvG7EGGD5ZsgUBAyswMRMRIRERIREhgAEE/vwBBP7yAxv85QPIAvYAAAIAXP48BJwFxAAtADkAhrIeOjsREjmwHhCwOdAAsAcvsABFWLAeLxuxHhg+WbI0Bx4REjmwNBCxEwGwCitYIdgb9FmyAhM0ERI5sAcQsQ4BsAorWCHYG/RZsgsTDhESObIuHgcREjmwLhCxKgGwCitYIdgb9FmyGS4qERI5sB4QsSUBsAorWCHYG/RZsiIqJRESOTAxARQHFhUUBCMgJDUlFBYzMjY1NCYkJiY1NDcmNTQkMzIEFSE0JiMiBhUUFgQWFiUGFRQWFxc2NTQmJwScoof+7fL+//7hASGAf3B0gf6TuVuiiAEZ7/cBEP7fe2tueG8BcsNe/S5LU3zeUlt2AeG2WWa6r8fWywFZX0s/QVJlbpZqtF1nuavS4slXa05ESUpibplzKmNFSyhDL10+TygAAgBeBNYDWgXUAAkAFAAeALADL7EHA7AKK1gh2Bv0WbAN0LADELAT0LATLzAxARQGIyImNDYyFhc0NjMyFhUUBiImAXNOPT5MTHxN0lE6O09MfE0FVTVJSmhLSzQ2SUo1NEtLAAMAVv/sBeIFxAAaACgANwCVsh84ORESObAfELAJ0LAfELA00ACwAEVYsCwvG7EsGD5ZsABFWLA0LxuxNAw+WbICNCwREjmwAi+0DwIfAgJdsgosNBESObAKL7QAChAKAl2yDQoCERI5sBCwCitY2BvcWbACELAXsAorWNgb3FmyGgIKERI5sCwQsR8KsAorWCHYG/RZsDQQsSYKsAorWCHYG/RZMDEBFAYgJjU1NDYzMhYVIzQmIyIGBxUUFjMyNjUlNAIkIyIEAhASBCAkEiU0EiQgBBIVFAIEIyIkAgRdr/7Avb+eo62cXFhcZQFmXFlaAaaW/u6jn/7vnJsBEQFAAROY+u+7AUsBgAFLu77+t7/B/re8AlSYotW0ca7VpZVgU4dxe3WHUWKFpgEdq6T+4P6s/uCnqgEgp8oBWsfH/qbKzP6lxsgBWgAAAgCJArMDDQXEABsAJQBwsg4mJxESObAOELAd0ACwAEVYsBUvG7EVGD5ZsgQmFRESObAEL7IABBUREjmxHAKwCitYIdgb9FmyAgQcERI5sgoEFRESObAKL7AVELEOArAKK1gh2Bv0WbIRChUREjmwChCxIAqwCitYIdgb9FkwMQEmJwYjIiY1NDYzMzU0IyIGFSc0NjMyFhURFBclMjY3NSMGBhUUAlwKB018doOorWZ0QUmtr4iHnBr+oChUG2pMVgLBGylSe2lueTN/MzAOaIGQhf7EYVGCJRmIATwxWP//AE0AfQOgA5wAJgGS4QAABwGSAWIAAAABAH4BdgPBAyUABQAbALAEL7AB0LABL7AEELECAbAKK1gh2Bv0WTAxASMRITUhA8HI/YUDQwF2AQSrAAAEAFb/7AXiBcQADgAcADIAOwCSALAARViwAy8bsQMYPlmwAEVYsAsvG7ELDD5ZsAMQsRMKsAorWCHYG/RZsAsQsRoKsAorWCHYG/RZsh4LAxESObAeL7IgAwsREjmwIC+0ACAQIAJdsjMeIBESObAzL7EdCrAKK1gh2Bv0WbImHTMREjmwHhCwLdCwK7AKK1jYG9xZsCAQsTsKsAorWCHYG/RZMDETNBIkIAQSFRQCBCMiJAIlNAIkIyIEAhASBCAkEiURIxEhMhYVFAcWFhQWFxUjJjU0JiMnMzI2NTQmJyNWuwFLAYABS7u+/re/wf63vAURlv7uo5/+75ybAREBQAETmP0llwEZl65xPTEHCpsNQk2eiEpfR12NAtnKAVrHx/6mysz+pcbIAVrLpgEdq6T+4P6s/uCnqgEgW/6vA1KJfnA+H2+kRBcQIqBMQ4ZANEY7AQABAKgFBwNaBa4AAwAZsgAEBRESOQCwAi+xAAKwCitYIdgb9FkwMQEhNSEDWv1OArIFB6cAAgB+A6ACmgXEAAoAFAAxALAARViwAy8bsQMYPlmwC9CwCy+xCAKwCitYIdgb9FmwAxCxEQKwCitYIdgb9FkwMRM0NjMyFhQGIyImBTI2NTQmIgYUFn6ibm2fn21spAEQNUVFakhJBLByoqHmnZ0JRzU0TExoSAAAAgBZAAED7QUFAAsADwBBALAJL7AARViwDS8bsQ0MPlmwCRCwANCwCRCxBgGwCitYIdgb9FmwA9CwDRCxDgGwCitYIdgb9FmyBQ4GERI5MDEBIRUhESMRITUhETMBITUhAqUBSP64/f6xAU/9ASz8oANgA67x/pQBbPEBV/r86wABADcCmwK1BbsAFwBbsggYGRESOQCwAEVYsA8vG7EPGD5ZsABFWLAALxuxABA+WbEWArAKK1gh2Bv0WbICFgAREjmyAw8AERI5sA8QsQgCsAorWCHYG/RZsgsADxESObIUDwAREjkwMQEhNQE2NjU0IyIGFSM0NjMyFhUUBgcHIQK1/ZQBHzgxXzI7zquHlKFIbJQBXwKbigEBMVQXVD4vdJ6Bd0Z0V3MAAAEAMAKQArUFuwAkAJOyHiUmERI5ALAARViwDS8bsQ0YPlmwAEVYsBcvG7EXED5ZsgEXDRESOXywAS8YstABAV22oAGwAcABA3G2QAFQAWABA3GykAEBXbQwAUABAnKwDRCxBgKwCitYIdgb9FmyCQ0BERI5sAEQsCOwCitY2BvcWbISIwEREjmyGyMXERI5sBcQsR4CsAorWCHYG/RZMDEBMzI1NCYjIgYVIzQ2MzIWFRQHFhUUBiMiJjUzFBYzMjY1NCcjARFSdzkxKjvNqYORq4eWt5SOrM5ENDw1elwEcVgjKh8dZnt3a3cyKY9pf4VyIjE1I1wBAAABAGUEygJlBgAAAwCJALACL7IPAgFdsADQsAAvsg8AAV2yAwIAERI5QCELAxsDKwM7A0sDWwNrA3sDiwObA6sDuwPLA9sD6wP7AxBdQCELAxsDKwM7A0sDWwNrA3sDiwObA6sDuwPLA9sD6wP7AxBxQCELAxsDKwM7A0sDWwNrA3sDiwObA6sDuwPLA9sD6wP7AxByMDEBIQEjASoBO/7r6wYA/soAAQCL/mAETgQ6ABIAUbINExQREjkAsABFWLAALxuxABQ+WbAARViwBy8bsQcUPlmwAEVYsBAvG7EQDj5ZsABFWLANLxuxDQw+WbEEAbAKK1gh2Bv0WbILBw0REjkwMQERFBYzMjcRIREhJwYjIicRIREBrFFjlTgBIf7zBlmIZkj+3wQ6/ZF+d2kC+/vGRFkt/kgF2gAAAQBLAAADZQWwAAoAK7ICCwwREjkAsABFWLAILxuxCBg+WbAARViwAC8bsQAMPlmyAQAIERI5MDEhESMiJDU0JDMhEQKKUOb+9wEK5gEqAgj+1tX/+lAAAAEAjAIfAdMDVAAJABmyBwoLERI5ALACL7EHBrAKK1gh2Bv0WTAxEzQ2MhYUBiMiJoxcjl1eRkhbArlFVlaKVVcAAAEAYv4yAeQABwANADCyBQ4PERI5ALAGL7AAL7IgBgFdsAYQsAewCitY2BvcWbIMBwAREjmyAQAMERI5MDElBxYVFAYjJzI1NCYnNwFZC5a3pgdwQ0sfBzobkm6Ap1EqHwWPAAABAIcCmwIQBa0ABgBBsgEHCBESOQCwAEVYsAUvG7EFGD5ZsABFWLAALxuxABA+WbIEAAUREjmwBC+xAwKwCitYIdgb9FmyAgMFERI5MDEBIxEHNSUzAhDMvQF2EwKbAiQpnnkAAgB2ArIDKwXEAAwAGgA1ALAARViwAi8bsQIYPlmyCRsCERI5sAkvsRACsAorWCHYG/RZsAIQsRcCsAorWCHYG/RZMDETNDYgFhUVFAYjIiY1FxQWMzI2NzU0JiMiBhV2vwE2wLydnr6vXVBOWwFdT05dBGGgw8KmSJ/DxKMFYm5sYVBhbm1m//8AVQB8A7EDmwAmAZMFAAAHAZMBjgAA//8AZQAABW4FqgAnAcb/3gKYACcBlAEfAAgBBwIgAq4AAAAQALAARViwBS8bsQUYPlkwMf//AFQAAAXFBbAAJwGUAPUACAAnAcb/zQKeAAcBxQMQAAD//wBeAAAGDAW7ACcBlAHAAAgAJwIgA0wAAAAHAh8ALgKbAAIARf5/A8wETgAYACEAVrIIIiMREjmwCBCwHNAAsA8vsABFWLAfLxuxHxQ+WbEcBrAKK1gh2Bv0WbAY0LAYL7IDDxgREjmwDxCxCAGwCitYIdgb9FmyCw8YERI5shQYDxESOTAxARQOAxUUMzI2NyEGBiMiJjU0Nzc2NjcBFAYiJjQ2MhYCmj6fOR2aTVsCASEC8tLV7JlhMicCASRcjFxZklkCg4WklEhKLJ1aUcDXy7yfmV0tYlkBMkNWVoZWVgAAAgACAAAHSQWwAA8AEgB7ALAARViwBi8bsQYYPlmwAEVYsAAvG7EADD5ZsABFWLAELxuxBAw+WbIRBgAREjmwES+xAgGwCitYIdgb9FmwBhCxCAGwCitYIdgb9FmyCwAGERI5sAsvsQwBsAorWCHYG/RZsAAQsQ4BsAorWCHYG/RZshIGABESOTAxISEDIQMhASEVIRMhFSETIQEhAwdJ/H8O/kKn/q0DEgP4/aoPAfb+FBACavswATcYAU3+swWw7P6d7P52AVkCOgAAAQBBAM0D9gSPAAsAOACwAy+yCQwDERI5sAkvsgoJAxESObIEAwkREjmyAQoEERI5sAMQsAXQsgcEChESObAJELAL0DAxEwEBNwEBFwEBBwEBQQEz/s2qATABMar+zQEzqv7P/tABdQE5ATmo/skBN6j+x/7HqAE2/soAAAMAXf+hBTUF7gAXACAAKQBVALAARViwEC8bsRAYPlmwAEVYsAQvG7EEDD5ZshoQBBESObIjEAQREjmwIxCwG9CwEBCxHQGwCitYIdgb9FmwGhCwJNCwBBCxJgGwCitYIdgb9FkwMQEUAgQjIicHIzcmETU0EiQzMhc3MwcWEQUUFwEmIyIGBwU0JwEWMzI2NwU1mP7lt6SDVbyPxZsBG7avi0q7hrP8WDEBv0lrl6QBAnkm/khGXZejAQK31/68sEaR8sMBaDnXAUevUnzjxv6tO6xxAvU96+MFl2n9GC/t4wACAIUAAASdBbAADQAVAFmyEBYXERI5sBAQsALQALAARViwAC8bsQAYPlmwAEVYsAsvG7ELDD5ZsgEACxESObABL7IQAAsREjmwEC+xCQGwCitYIdgb9FmwARCxDgGwCitYIdgb9FkwMQERMx4CFRQEByMRIREBETMyNjQmJwGm5qLvgP7r8PL+3wEh33WCf3AFsP71AW/Nhsr0Bf7hBbD+DP5MdsR4AgABAIf/7ATIBhcAKQBashgqKxESOQCwAEVYsAUvG7EFGj5ZsABFWLAALxuxAAw+WbAARViwEy8bsRMMPlmyCwUTERI5sRkBsAorWCHYG/RZsh8TBRESObAFELEnAbAKK1gh2Bv0WTAxISERNDYzMhYVFAYVFBYXFhUUBiMiJic3FjMyNjU0JicmNTQ2NTQmIyIHAaj+3/jiv+drPViX5tdRnig2YnlPVEVSlm5ZRJ8FBE3c7serbK5NJU9OhpSxxSAY5TRJPy5XQniWYLVPRlPVAAADAEL/7AaNBFAAKQA0ADwA3rICPT4REjmwAhCwLdCwAhCwONAAsABFWLAXLxuxFxQ+WbAARViwGy8bsRsUPlmwAEVYsAAvG7EADD5ZsABFWLAFLxuxBQw+WbICGwAREjmyDBsAERI5sAwvso8MAV2wFxCxEAGwCitYIdgb9FmyEwwXERI5shkbABESObI5GwAREjmwOS+yjzkBXbQfOS85AnGyXzkBcbEfCLAKK1gh2Bv0WbAAELEjAbAKK1gh2Bv0WbImAB8REjmwBRCxKgGwCitYIdgb9FmwDBCxLgiwCitYIdgb9FmwEBCwNdAwMQUiJwYGIyImNTQ2NzM1NCYjIgYVJTQkMzIXNhcyEhUVIRYWMzI2NxcGBiUyNjc1IwYGFRQWASIGByE1NCYE3veLQM19utb486hRTVJf/t8BBdDTdH7I1PL9ZAuLdU2DV01J1/y5MXQnpF9vUQMTWm0NAX5XFJNFTrKhnawBOUxWRzQTlb1ucAL++eiddHogLb04QNQtI70BVD04QwKkc20cXmYAAAIAVP/sBFEGKwAcACgAWrIHKSoREjmwBxCwJdAAsA4vsABFWLAYLxuxGBo+WbAARViwBy8bsQcMPlmwGBCxFwGwCitYIdgb9FmwDhCxHwGwCitYIdgb9FmwBxCxJQGwCitYIdgb9FkwMQESExUUAgYjIiYmNTQSMzIXJicHJzcmJzcWFzcXAyYjIgYVFBYzMjY1A1H/AYXuk5DmgfbOiGwxdb9OmHSUW+6yq02sRJNxc3hiZ3oFGf76/nhKrP7ul3/hiOcBC0yYcXpyYUgn4DCEbXL9JVOVgXCPtZ4AAAMAPwB/BEME2QADAA8AGwBdsgccHRESObAHELAA0LAHELAT0ACwAEVYsAIvG7ECEj5ZsQABsAorWCHYG/RZsAIQsA2wCitY2BvcWbAHsAorWNgb3FmwABCwE7AKK1jYG9xZsBmwCitY2BvcWTAxASE1IQE0NjMyFhUUBiMiJhE0NjMyFhUUBiMiJgRD+/wEBP1cW0hHXVpKS1hbSEddWkpLWAI75gEgRFRTRUNTVP0WRFRTRUNTVAADAEL/cgRDBMAAFAAcACQAaLIEJSYREjmwBBCwGtCwBBCwItAAsABFWLAELxuxBBQ+WbAARViwDi8bsQ4MPlmyFwQOERI5sh8EDhESObAfELAY0LAEELEaAbAKK1gh2Bv0WbAXELAg0LAOELEiAbAKK1gh2Bv0WTAxEzQ2NjMyFzczBxYRFAAjIicHIzcmARQXASYjIgYFNCcBFjMyNkJ86ZplVUahZ8j+6upfUUihZ88BISkBBCQranQBvyX/AB4oaXYCJ6H8ih2P05X+uvn+0xqU1JIBOoJOAhQOpZhyUv30CqEAAAIAcf5gBD8GAAAPABkAZrITGhsREjmwExCwBNAAsAgvsABFWLAMLxuxDBQ+WbAARViwBi8bsQYOPlmwAEVYsAMvG7EDDD5ZsgUMAxESObIKDAMREjmwDBCxEwGwCitYIdgb9FmwAxCxGAGwCitYIdgb9FkwMQEUAiMiJxEhESERNjMyEhElNCYjIgcRFjMyBD/jwaRk/t4BImSixuD+32tmhDY2hs8CE/r+03H+Aweg/d1x/tr++QeXpGb+QWkAAAIAQv/sBK8GAAAWACAAj7IfISIREjmwHxCwDdAAsBMvsABFWLAMLxuxDBQ+WbAARViwAi8bsQIMPlmwAEVYsAYvG7EGDD5Zsi8TAV2yDxMBXbIWAhMREjmwFi+xAAewCitYIdgb9FmyBAwCERI5sg4MAhESObAP0LAWELAR0LAGELEaAbAKK1gh2Bv0WbAMELEfAbAKK1gh2Bv0WTAxASMRIScGIyICETQSMzIXNSM1MzUhFTMBFBYzMjcRJiMiBK+e/vsObKq/5+PFnmf8/AEinvy0amWGNzaF0QTC+z5zhwEtAQz9ASx26reHh/yXmKJxAatxAAIAIAAABa0FsAATABcAbQCwAEVYsA8vG7EPGD5ZsABFWLAILxuxCAw+WbIUCA8REjmwFC+yEBQPERI5sBAvsADQsBAQsRcHsAorWCHYG/RZsAPQsAgQsAXQsBQQsQcBsAorWCHYG/RZsBcQsArQsBAQsA3QsA8QsBLQMDEBMxUjESERIREhESM1MzUhFSE1IQEhNSEFM3p6/tT9t/7TcXEBLQJJASz8iwJJ/bcEyK775gJw/ZAEGq7o6Oj9srgAAAEAhgAAAacEOgADAB0AsABFWLACLxuxAhQ+WbAARViwAC8bsQAMPlkwMSEhESEBp/7fASEEOgAAAQCCAAAEkgQ6AAwAYACwAEVYsAQvG7EEFD5ZsABFWLAILxuxCBQ+WbAARViwAi8bsQIMPlmwAEVYsAsvG7ELDD5ZsgYCCBESObAGL7TfBu8GAl2yXwYBXbEBAbAKK1gh2Bv0WbIKAQYREjkwMQEjESERIREzASEBASECGXb+3wEhVwEaAW3+hAGN/o0Bj/5xBDr+aQGX/ff9zwAAAQAdAAAETAWwAA0AXQCwAEVYsAwvG7EMGD5ZsABFWLAGLxuxBgw+WbIBDAYREjmwAS+wANCwARCxAgKwCitYIdgb9FmwA9CwBhCxBAGwCitYIdgb9FmwAxCwCNCwCdCwABCwC9CwCtAwMQE3FQcRIRUhEQc1NxEhAc/X1wJ9/FeGhgEsA38+pj7+GPECgiamJgKIAAEAHgAAAlEGAAALAEsAsABFWLAKLxuxCho+WbAARViwBC8bsQQMPlmyAQQKERI5sAEvsADQsAEQsQICsAorWCHYG/RZsAPQsAbQsAfQsAAQsAnQsAjQMDEBNxUHESERBzU3ESEBw46O/t+EhAEhA44vpi/9GAKILKYsAtIAAAEAgP5LBSAFsAATAFuyBhQVERI5ALAARViwAC8bsQAYPlmwAEVYsBAvG7EQGD5ZsABFWLAELxuxBA4+WbAARViwDi8bsQ4MPlmwBBCxCQGwCitYIdgb9FmyDQ4QERI5shIOABESOTAxAREUBiMiJzcWMzI1NQERIREhAREFIMy3UUIOLjV5/bn+0wEtAkcFsPo2xNcR7gyuFAPU/CwFsPwtA9MAAQBs/ksEFwROABoAY7INGxwREjkAsABFWLADLxuxAxQ+WbAARViwAC8bsQAUPlmwAEVYsAovG7EKDj5ZsABFWLAYLxuxGAw+WbIBGAMREjmwChCxDwGwCitYIdgb9FmwAxCxFQGwCitYIdgb9FkwMQEXNjMyFhcRFAYjIic3FjMyNRE0JiMiBxEhEQF5DXHErK8ByrNOQQ4tNnlOVoBE/t8EOpis3Nj9RMLREecMrQKwbGNX/PQEOgAAAgBg/+wHVAXEABcAIwCWsgEkJRESObABELAa0ACwAEVYsAwvG7EMGD5ZsABFWLAOLxuxDhg+WbAARViwAC8bsQAMPlmwAEVYsAMvG7EDDD5ZsA4QsRABsAorWCHYG/RZshMADhESObATL7EUAbAKK1gh2Bv0WbAAELEWAbAKK1gh2Bv0WbADELEYAbAKK1gh2Bv0WbAMELEdAbAKK1gh2Bv0WTAxISEGIyIkAicRNBIkMzIXIRUhESEVIREhBTI3ESYjIgYHERQWB1T8iqd5rv7smQOXARWwe6cDdP1fAj/9wQKj+2peaHBYlqQBpxSTAQupAT2tARGWFPP+pev+eh0NA+wOua3+y7C8AAMAU//sBusEUAAdACkAMQCRsgYyMxESObAGELAj0LAGELAt0ACwAEVYsAQvG7EEFD5ZsABFWLAILxuxCBQ+WbAARViwFy8bsRcMPlmyBggXERI5si4IFxESObAuL7KPLgFdtB8uLy4CcbEMCLAKK1gh2Bv0WbAXELEQAbAKK1gh2Bv0WbIZCBcREjmwIdCwBBCxJwGwCitYIdgb9FmwKtAwMRM0NjYzMhc2FzISFRUhFhYzMjY3FwYGIyInBiAAEQUUFjMyNjU0JiMiBiUiBgchNTQmU3romueMhtfW9v1yEINnVYZST0nad+mMiv4u/usBIXFsanJ0amlyA6tNYhABb10CJ6H7i5WXAv7+7J5xfSEtuzpBlZUBKwEDCJujobKZpKSkcmsaYWIAAAEAdQAAAqMGFQAMADOyAw0OERI5ALAARViwBC8bsQQaPlmwAEVYsAAvG7EADD5ZsAQQsQkBsAorWCHYG/RZMDEzETQ2MzIXByYjIhURdc+/QGAYLDWUBJa3yBXfCpn7bgAAAgBL/+wFLgXEABUAHQBesgAeHxESObAW0ACwAEVYsA4vG7EOGD5ZsABFWLAALxuxAAw+WbIFDgAREjmwBS+wDhCxCAGwCitYIdgb9FmwABCxFgGwCitYIdgb9FmwBRCxGQGwCitYIdgb9FkwMQUgABE1ISYmIyIHJzYkMyAAERUUAgQDMjY3IRUUFgK9/tf+twO2B87AzLcxQAEOdQFCAXGi/uCvhaoS/XmoFAFmAU2bvMc/9x4x/pT+vYq//s2tAQW0oR+YngAB/93+SwLmBhUAHQB0shMeHxESOQCwAEVYsBQvG7EUGj5ZsABFWLAPLxuxDxQ+WbAARViwHC8bsRwUPlmwAEVYsAUvG7EFDj5ZsBwQsQAJsAorWCHYG/RZsAUQsQkBsAorWCHYG/RZsAAQsA3QsA7QsBQQsRkBsAorWCHYG/RZMDEBIwMUBiMiJzcWMjY1ESM1MzU2NjMyFwcmIyIVFTMCqc8BwaxOQQ8cfjKhoQLRvD9gGCo5kc8DZvxrvMoR5QxPSwOX1GSzxBXgCpZaAAIAUP/sBbsGHgAYACYAXrIEJygREjmwBBCwI9AAsABFWLANLxuxDRg+WbAARViwBC8bsQQMPlmyEA0EERI5sBAvsRYKsAorWCHYG/RZsA0QsRwBsAorWCHYG/RZsAQQsSMBsAorWCHYG/RZMDEBFAIEIyIkAic1NBIkMzIWFzY2NTMQBxYXBTQmIyIGBxUUFjMyNjcFKJj+5be1/uScAZsBG7aJ4VJJNsTkTwL+0KSYl6QBpJqXogECt9f+vLCuAUPSSNcBR69hWxKQdP6oTaXTCOXu6+NH3/bt4wACAED/7AS3BJ8AFgAiAF6yEyMkERI5sBMQsBrQALAARViwBC8bsQQUPlmwAEVYsBMvG7ETDD5ZsgYEExESObAGL7EMCrAKK1gh2Bv0WbATELEaAbAKK1gh2Bv0WbAEELEgAbAKK1gh2Bv0WTAxEzQ2NjMyFzY2NTMQBxYVFRQGBiMiACclFBYzMjY1NCYjIgZAfeqZ7YwuILCxO33nm+D+6gsBIXRsanR0bGp0Aiei/ImbHXlW/vBQe50VovyIARbsJJqjorCWp6UAAQB0/+wGVAYBABkAVrINGhsREjkAsABFWLAALxuxABg+WbAARViwES8bsREYPlmwAEVYsA0vG7ENDD5ZsgEADRESObABL7EJCrAKK1gh2Bv0WbANELEWAbAKK1gh2Bv0WTAxARU+AjUzFAYHERQAISIAJxEhERQWMzITEQTQS1MlwbvJ/tX+/f/+1AMBLIl5/QQFsOQGPW+D8NoJ/cPv/uoBDuwDyvw/j4MBCgPJAAABAGj/7AU3BJkAGABqsgcZGhESOQCwAEVYsAwvG7EMFD5ZsABFWLATLxuxExQ+WbAARViwBC8bsQQMPlmwAEVYsAgvG7EIDD5ZshUTBBESObAVL7EDCrAKK1gh2Bv0WbIGEwQREjmwCBCxEAGwCitYIdgb9FkwMQEUBgcRIScGIyImJxEhERQzMjcRIRU2NjUFN4+Z/vAIa72utwIBIZqTNwEiRDcEmbavEPzcboLIwQLF/UWpZgL+iw9efQAAAf+t/ksBtwQ6AAwAMLIDDQ4REjkAsABFWLAALxuxABQ+WbAARViwBC8bsQQOPlmxCQGwCitYIdgb9FkwMQERBgYjIic3FjMyNREBtwHHtE1BDiw2eQQ6+6LA0RHlDLAEVQACAE7/7AQBBE8AFgAeAGiyCB8gERI5sAgQsBfQALAARViwAC8bsQAUPlmwAEVYsAgvG7EIDD5Zsg0ACBESObANL7AAELEQAbAKK1gh2Bv0WbITDQAREjmwCBCxFwGwCitYIdgb9FmwDRCxGgiwCitYIdgb9FkwMQEyABUVFAYGJyICNTUhJiYjIgcHJzY2EzI2NyEVFBYCAOMBHnnfj9j0Ao4Qg2eMZTxPSdiTTWIQ/pFcBE/+2fUdn/+MAQED6p5wfjAeuzpC/IdyaxpgYwAAAQB7BNwDdwYAAAgAOQCwBC+yDwQBXbAH0LAHL7QPBx8HAl2yBQQHERI5GbAFLxiwAdAZsAEvGLAEELAC0LIDBAcREjkwMQEVIycHIzUBMwN35pqa4gEoqAToDJGREAEUAAABAFUE3QNoBgEACAAlALAEL7IPBAFdsAHQsAEvtA8BHwECXbIABAEREjmwCNCwCC8wMQE3MxUBIwE1MwHfkvf+0rf+0vcFco8L/ucBGwkA//8AqAUHA1oFrgMGAHAAAAAKALABL7ECB/QwMQABAGoEzQMeBfYADAAnsgkNDhESOQCwAy+yDwMBXbEJArAKK1gh2Bv0WbAG0LAGL7AM0DAxARQGICY1MxQWMzI2NQMev/7Kv81LQkFKBfaFpKKHP0VFPwAAAQB2BNYBngXnAAkAFwCwBS+yDwUBXbEAA7AKK1gh2Bv0WTAxATIWFAYjIiY0NgEKRU9PRURQUQXnTXhMTHhNAAIAdwRkAjUF+gALABUAKrIDFhcREjmwAxCwFNAAsAkvsAPQsAMvsj8DAV2wCRCwD9CwAxCwFNAwMRM0NjMyFhUUBiMiJjcUFjI2NTQmIgZ3gl1cg4BfYX5zOmQ6O2I7BS1Wd3VYVXR2Uyw/PywuPz8AAAEAIf5aAakAPAAPABoAsABFWLAKLxuxCg4+WbAFsAorWNgb3FkwMSEGBhUUMzI3FwYjIiY1NDcBlEpQQiEvHUlcZH/fKlE1QRSdLG9irGUAAQB1BOADZgX/ABcAQgCwAy+wCNCwCC+2DwgfCC8IA12wAxCwC9CwCy+wCBCxDwewCitYIdgb9FmwAxCxFAewCitYIdgb9FmwDxCwF9AwMQEUBiMiLgIjIgYVJzQ2MzIeAjMyNjUDZoRfJjtoLhsjMaiDXx41eC4ZIzMF9HGZETgNMi4Kb5wPOgwxLgACADkE0gN9Bf8AAwAHAEAAsAIvsg8CAV2wANCwAC+0DwAfAAJdsAIQsAPQGbADLxiwABCwBdCwBS+wAhCwBtCwBi+wAxCwB9AZsAcvGDAxASEBIwMzAyMCegED/vbapv/l1AX//tMBLf7TAAACAI7+cQID/8cACQATACmyABQVERI5sAzQAH2wFC8YsADQfLAALxiwBdCwBS+wDNCwABCwEtAwMQUyFhQGIyImNDYXFBYyNjU0JiIGAUpRaGhRUGxsBStAKChAKzlmjmJgkmStICoqICIrKwAB/IAEyv6BBgAAAwAcALABL7AA0BmwAC8YsAEQsALQsAIvsg8CAV0wMQEjASH+ge3+7AE8BMoBNgAAAf1WBMr/VgYAAAMAHACwAi+wAdCwAS+yDwEBXbACELAD0BmwAy8YMDEBIQEj/hoBPP7q6gYA/soA///8YQTg/1IF/wAHAKX77AAAAAH9HwTz/qEGhgAOACkAsAAvsAfQsAcvQAkPBx8HLwc/BwRdsAbQsgEABhESObINAAEREjkwMQEnNjY1NCM3MhYVFAYHFf0yD0lBjge8v1JEBPOGBB0gRYdoWztLCkAAAAL78ATk/1YF7gADAAcANwCwAS+wANAZsAAvGLABELAF0LAFL7AG0LAGL7YPBh8GLwYDXbAD0LADL7AAELAE0BmwBC8YMDEBIwEhASMDIf4D7/7cAR4CSOn1ARgE5AEK/vYBCgAB/Qf+i/5K/6AACgAZALADL7QAAxADAl2xCQOwCitYIdgb9FkwMQU0NjMyFhUUBiIm/QdaR0haWZJY6jxOTjw7UFAAAAEA2gToAikGQQADABgAsAIvsADQsAAvsgMCABESORmwAy8YMDEBIQMjASMBBqOsBkH+pwADAGYE1gPkBtcAAwANABgALQCwCy+wA9CwAy+wANCwAC+wCxCxBgOwCitYIdgb9FmwEdCwCxCwF9CwFy8wMQEhAyMFNDYyFhQGIyImJTQ2MzIWFRQGIiYB+wEDmpT+lk18TEw+PU4CaU87OlFNfEwG1/60NjRLS2hKSTU1Skk2NEtLAP//AIwCHwHTA1QCBgB4AAAAAQCEAAAEPQWwAAUALACwAEVYsAQvG7EEGD5ZsABFWLACLxuxAgw+WbAEELEAAbAKK1gh2Bv0WTAxASERIREhBD39c/7UA7kEvftDBbAAAgAUAAAFzQWwAAMABgAwALAARViwAC8bsQAYPlmwAEVYsAIvG7ECDD5ZsQQBsAorWCHYG/RZsgYCABESOTAxASEBISUhAQJZATcCPfpHAZcCjf67BbD6UPEDZAADAFL/7AUqBcQAAwAUACIAbbIIIyQREjmwCBCwAdCwCBCwH9AAsABFWLAQLxuxEBg+WbAARViwCC8bsQgMPlmyAggQERI5fLACLxi0MAJAAgJdsQEBsAorWCHYG/RZsBAQsRgBsAorWCHYG/RZsAgQsR8BsAorWCHYG/RZMDEBITUhBRQCBCMiJAInNTQSJCAEEhUlNCYjIgYHFRQWMzI2NwOF/oEBfwGlmP7lt7X+5JwBmwEbAWwBG5v+0KSYl6QBpJqXogECX+iQ1/68sK4BQ9JI1wFHr6/+udYB5e7r40ff9u3jAAEAEAAABRsFsAAGADEAsABFWLADLxuxAxg+WbAARViwAS8bsQEMPlmwAEVYsAUvG7EFDD5ZsgADARESOTAxAQEhASEBIQKV/sD+uwHpATgB6v67BBP77QWw+lAAAwBfAAAEOAWwAAMABwALAG0AsABFWLAILxuxCBg+WbAARViwAi8bsQIMPlmxAAGwCitYIdgb9FmyBQIIERI5sAUvtG8FfwUCXbR/BY8FAnG03wXvBQJdsv8FAXGyjwUBcrEGAbAKK1gh2Bv0WbAIELEKAbAKK1gh2Bv0WTAxNyEVIRMhFSEDIRUhXwPZ/CdzAvP9DVsDlvxq8fEDVOkDRfMAAQCEAAAFJAWwAAcAOQCwAEVYsAYvG7EGGD5ZsABFWLAALxuxAAw+WbAARViwBC8bsQQMPlmwBhCxAgGwCitYIdgb9FkwMSEhESERIREhBST+0/25/tQEoAS9+0MFsAAAAQBIAAAEUQWwAAwAPgCwAEVYsAgvG7EIGD5ZsABFWLADLxuxAww+WbEBAbAKK1gh2Bv0WbAF0LAIELEKAbAKK1gh2Bv0WbAH0DAxAQEhFSE1AQE1IRUhAQM9/qICcvv3Abf+SQPx/asBWQLX/hrxlwJIAjqX8/4pAAADAEkAAAXqBbAAFQAcACMAd7IKJCUREjmwChCwGdCwChCwINAAsABFWLAULxuxFBg+WbAARViwCi8bsQoMPlmyExQKERI5sBMvsADQsAAvsgsKFBESObALL7AI0LAIL7ALELEZAbAKK1gh2Bv0WbATELEaAbAKK1gh2Bv0WbAg0LAZELAh0DAxARYEFhUUBgQHFSE1JiQmNTQSJDc1IQEUFhcRBgYFNCYnETY2A7GrAQKMjP77qP7Uqv76jI4BBakBLP2/lIGDkgNTj4OCkAUHB5D/op/4jQekpAWN+J+kAQCRBan9HYqTBwJZCJ6Ni6AI/agIlAABADQAAAWYBbAAGABdsgwZGhESOQCwAEVYsAQvG7EEGD5ZsABFWLARLxuxERg+WbAARViwFy8bsRcYPlmwAEVYsAsvG7ELDD5ZshYECxESObAWL7AA0LAWELENAbAKK1gh2Bv0WbAK0DAxATY2NREhEQIHBgcRIREmAAMRIREUFhcRIQOBdnMBLgObjO3+1Pv+2wEBLIF0ASwCehawoQHP/ij+9Z+OGv56AYUUATwBCQHS/jGdsRcDNAABAGYAAATpBcMAJABesgYlJhESOQCwAEVYsBkvG7EZGD5ZsABFWLAOLxuxDgw+WbAARViwIy8bsSMMPlmwDhCxEAGwCitYIdgb9FmwDdCwANCwGRCxBgGwCitYIdgb9FmwEBCwIdCwItAwMSU2Ezc0JiMiBhUVFBIXFSE1MyYCJzU0EiQzMgQSFxUUAgczFSEC364MAYBzcYFiYP4A2W18AZIBCKelAQeTA35s2P4I+EsBiZK3ubm3V+H+9yX49GIBF5ZZsQEanJn+7axkm/7pYfQAAAIASf/rBHwETgAWACAAf7IeISIREjmwHhCwE9AAsABFWLATLxuxExQ+WbAARViwAC8bsQAUPlmwAEVYsAgvG7EIDD5ZsABFWLAMLxuxDAw+WbAIELEDAbAKK1gh2Bv0WbIKAAwREjmyFQAMERI5sAwQsRkBsAorWCHYG/RZsBMQsR4BsAorWCHYG/RZMDEBERYzMjcXBiMiJwYjIgInJxASMzIXNwEQMzI3ESYjIgYEBwNEDggYMku1RGK1ueIKAeTEpWEV/l/Ndzc3dWNsBDr9FXYE2RmnpgEH5T0BBwEyloL9xv7UYAHHaawAAgCO/moEhgXEABQAKAB2sgApKhESObAY0ACwAEVYsAAvG7EAGD5ZsABFWLAPLxuxDw4+WbAARViwDC8bsQwMPlmyJgwAERI5sCYvtG8mfyYCXbElCbAKK1gh2Bv0WbIGJSYREjmwABCxGAGwCitYIdgb9FmwDBCxHgGwCitYIdgb9FkwMQEyFhUUBgcWFhUUBiMiJxEhETQ2NgE0JiMiBhURFjMyNjU0JiMjNTM2AnLY/WRbe4Pu0J57/t9+4AE6Y1FVblKGZnhtamFOqwXE0LpkojEquIPN5Uz+MgWgfcty/mBSZHFj/Qk6c1psedMGAAABABH+XwQGBDoACAA4sgAJChESOQCwAEVYsAEvG7EBFD5ZsABFWLAHLxuxBxQ+WbAARViwBC8bsQQOPlmyAAcEERI5MDEBEyEBESERASECD8kBLv6V/t/+lwEuAVUC5fvU/lEBuAQjAAIARP/sBEgGJAAdACkAZbIUKisREjmwFBCwIdAAsABFWLADLxuxAxo+WbAARViwFC8bsRQMPlmwAxCxCQGwCitYIdgb9FmyJwMUERI5sCcQsQ4IsAorWCHYG/RZshsnDhESObAUELEhAbAKK1gh2Bv0WTAxEzQ2MzIXFxUmIyIGFRQEFhYVFAAjIgA1NTQ2NycmExQWMzI2NTQmJyIGwN2+ZVxElVdLVgE+02T+5+fp/uWziAO8pXppZ3h+YWh7BOGZqhkU3i8zLVBwqNae8/7TASP4C578IwZh/eOZrKytb7gVqwAAAQBf/+wELwRNACYAhbIYJygREjkAsABFWLAILxuxCBQ+WbAARViwJC8bsSQMPlmyFggkERI5sBYvsr8WAXG0HxYvFgJxso8WAV2xFwiwCitYIdgb9FmyAhcWERI5sgwWCBESObAIELEPAbAKK1gh2Bv0WbAkELEdAbAKK1gh2Bv0WbIgJAgREjm0BCAUIAJdMDETNDcmJjU0JDMyBBUhNCYjIgYVFBYzMxUjBhUUFjMyNjUhFAQjIiRfzFdiAQPgyQEA/t9lUlFiWlq7v8RtWVxtASH+9tDf/ukBMrhDJHlIk6i6kTM+QjY0PsEBgDdLRjWaurMAAQBM/nsDyAWwAB4ASbIDHyAREjkAsABFWLAALxuxABg+WbAARViwFC8bsRQMPlmwABCxHAGwCitYIdgb9FmyARwAERI5sBQQsQgJsAorWCHYG/RZMDEBFQEGBhUUFhYXFhYVFAYHJzYnNicnJiY1NBI3NyE1A8j+mXVWSNo1Z1WGYpNgBARdWrmnfZPL/foFsKX+U4W9clJXPhMka1NLw0VwZUM/HBcvtJaZAROu8OgAAAEAbP5hBBcETgAPAFSyChARERI5ALAARViwAy8bsQMUPlmwAEVYsAAvG7EAFD5ZsABFWLAGLxuxBg4+WbAARViwDS8bsQ0MPlmyAQANERI5sAMQsQoBsAorWCHYG/RZMDEBFzYzIBMRIREmIyIHESERAXkLd8ABVAj+3gOhf0X+3wQ6hZn+e/uYBFuoXfz5BDoAAwBw/+wERwXEAA0AFAAcAG2yAx0eERI5sAMQsBLQsAMQsBrQALAARViwCi8bsQoYPlmwAEVYsAMvG7EDDD5ZshYKAxESOXywFi8YtDAWQBYCXbEOAbAKK1gh2Bv0WbADELESAbAKK1gh2Bv0WbAKELEaAbAKK1gh2Bv0WTAxARACIyIAAxEQEjMyABMFIRUQMzITASE1NCYjIgMER/7s6f8ABP/s5wEBBP7f/mvMuw3+bAGVZWa8DQJg/tP+uQE+ASUBAwEuAUT+x/7Z+DP+nAEwAUYwsq3+0wABAIr/9QJvBDoADAApALAARViwAC8bsQAUPlmwAEVYsAkvG7EJDD5ZsQQBsAorWCHYG/RZMDEBAxQWMzI3FQYjIAMRAawBL0EsKE5h/s8FBDr9GDw0CNsaATUDEAAAAQAH/+4EWwYKABkAU7ICGhsREjkAsAAvsABFWLALLxuxCww+WbAARViwEC8bsRAMPlmwCxCxBgGwCitYIdgb9FmyDwAQERI5shIQABESObAAELEWAbAKK1gh2Bv0WTAxATIXARcWFzM3FwYjIiYnAwMhAScmJiMHJzYBHsZFAaYQIjQUEAIpRW+NKqvd/sgBf0gUPi86BkYGCqP73SNIAQHkB2NxAdX9aQQhpTIoA9cWAAEAZ/53BAEFxAAsAF+yHC0uERI5ALAARViwKS8bsSkYPlmwAEVYsBsvG7EbDD5ZsCkQsQMBsAorWCHYG/RZsgkpGxESObAJL7EKAbAKK1gh2Bv0WbAbELEPAbAKK1gh2Bv0WbIkCgkREjkwMQEmJiMiBhUUMzMVIyAVFB8CFgcUBgcnNjU0JycuAzU0NjcmNTQkMzIWFwOaW1Qyc2nsj4v+u/KUTKcDiV6WX3U7bKp1PpuR1wED2lyAUgSwGA1NP5Tx+q85JBlAm07DQnBjRkIgECE/X49wjr4vTruzzRUdAAABADT/9QT+BDoAFABesgsVFhESOQCwAEVYsBMvG7ETFD5ZsABFWLAKLxuxCgw+WbAARViwDy8bsQ8MPlmwExCxAAGwCitYIdgb9FmwChCxBQGwCitYIdgb9FmwABCwDdCwDtCwEdCwEtAwMQEjERQWMzI3FQYjIAMRIREhESM1IQTmqy1CLChOYP7QBv7s/t+xBLIDXf31OzUI2xoBMwI1/KMDXd0AAgBx/mAEPgROAA4AGgBZshEbHBESObARELAA0ACwAEVYsAAvG7EAFD5ZsABFWLAKLxuxCg4+WbAARViwBy8bsQcMPlmyCQAHERI5sREBsAorWCHYG/RZsAAQsRcBsAorWCHYG/RZMDEBMgARFRQCIyInESERNAATFjMyNjU0JiMiBhUCXuABAOPAo2b+3wEOEziFZGprYlllBE7+zv7xDfj+5Hn9+wPY9AEi/OJcl6qiraWeAAABAD/+igPuBE4AIAA8shUhIhESOQCwGS+wAEVYsAAvG7EAFD5ZsgQhABESObEHAbAKK1gh2Bv0WbAZELENAbAKK1gh2Bv0WTAxATIWFSE0JiMiBgcVFBYEFhYXFAYHJzYnNCcmJic1NDY2AjPL8P7wW1BkbQFyARNuOQKJWpdeAmrt2AN54wRO5sFWZ5ybH3yHTT1cR0/GP3JiRkgYPvTLKaH7iAAAAgBC/+wEfgQ6AA4AGgBOsg0bHBESObANELAS0ACwAEVYsA0vG7ENFD5ZsABFWLAGLxuxBgw+WbANELEAAbAKK1gh2Bv0WbAGELESAbAKK1gh2Bv0WbAAELAY0DAxASMWFRQAIyIAETU0ADMhARQWMzI2NTQmIyIGBH7+r/7y4Oj+6QET7gI7/OVza2JrbGNodANQjtnk/ucBKgEEDe8BJP3YnKKisY6bmAABACz/7AP9BDoAEQBLsgsSExESOQCwAEVYsBAvG7EQFD5ZsABFWLAKLxuxCgw+WbAQELEAAbAKK1gh2Bv0WbAKELEFAbAKK1gh2Bv0WbAAELAO0LAP0DAxASERFBYzMjcXBiMiJicRITUhA/3+nCoxLzMeVWaWqgH+tAPRA1L99js2EdwgqbICC+gAAAEAcf/rBBAEOgASAD2yDhMUERI5ALAARViwAC8bsQAUPlmwAEVYsAgvG7EIFD5ZsABFWLAOLxuxDgw+WbEDAbAKK1gh2Bv0WTAxAREUMzI2NSYDIRYREAAjIiYnEQGTfmB/BGIBFHL+/PHQ2AIEOv1q0M2V7AEY5P7g/u7+x9/PAqEAAAIANv4iBbQESQAZACIAaLIPIyQREjmwDxCwGtAAsBgvsABFWLAQLxuxEBQ+WbAARViwBi8bsQYUPlmwAEVYsBcvG7EXDD5ZsABFWLAALxuxAAw+WbAXELEaAbAKK1gh2Bv0WbAM0LAQELEgAbAKK1gh2Bv0WTAxBSQAETQSNxcGBgcQBRE0NjMyFhYVFAAFESEBNjY1JiYjIhUCYv70/uB4acY/RQIBC6+Cm/SS/tv+9P7fASGCjgJ2ZTMMIQE7AQOaAQdUmkW2YP7MPAI8gamD/5j1/tUd/jACvhmojoumNAABAET+IgWxBDoAFwBQsgAYGRESOQCwDC+wAEVYsAAvG7EAFD5ZsABFWLAFLxuxBRQ+WbAARViwEi8bsRIUPlmwAEVYsAsvG7ELDD5ZsRYBsAorWCHYG/RZsAHQMDEBESQRJgMhFhEQAAURIREkAAMRIREQFxEDgAEQA2kBDIH+3f7y/t/++/7tAwEi+QQ6/Kg5ATjVARLa/vP+9v7HHf4vAdIgASkBBAH5/hL+0zsDVgAAAQBT/+wGQQQ6ACIAW7IaIyQREjkAsABFWLAALxuxABQ+WbAARViwES8bsREUPlmwAEVYsBcvG7EXDD5ZsABFWLAdLxuxHQw+WbEFAbAKK1gh2Bv0WbIIHQAREjmwDNCyGhEXERI5MDEBAgcUFjMyEREhERAzMjY1JgMhFhEQAiMiJicGBiMiAhEQNwH8gAdTSqABMaBMUQeBARSV3tZupTAxpG3X3pUEOv7y9q21ASEBV/6p/t+7p/gBDOT+4P7c/tpsaGhsAScBIwEg5AACAHX/7AS5BcQAHgAnAG6yBigpERI5sAYQsB/QALAARViwGS8bsRkYPlmwAEVYsAYvG7EGDD5Zsh0GGRESObAdL7ETAbAKK1gh2Bv0WbAC0LILBhkREjmwBhCxDwGwCitYIdgb9FmwHRCwItCwGRCxJQGwCitYIdgb9FkwMQEGBxUUACMiADU1JRUUFjMyNjU1JgInNTQ2IBYXETclFBYXESYjIhUEuTBB/vDd2P7yARN6Z1Ncy/UE1gFYxAJm/blaVwJPYAJBEAxU4P77AQ3Z7QHybYN9b1krAQ23IrjY3cD++hT1V4YgARp8hwAAAf/nAAAE1gXKABgAQ7IAGRoREjkAsABFWLAVLxuxFRg+WbAARViwDC8bsQwMPlmyAAwVERI5sBUQsATQsBUQsREBsAorWCHYG/RZsAjQMDEBEzY2MzIXByciBwERIREBJiMHJzYzMhYXAl62MZRrSUkmOUQf/t/+0v7iHkY5I0tFcY4uAv8B14JyGecFR/1g/hgB6AKgRwXnGWt0AAACABT/7AaVBDoAFAAmAHKyCScoERI5sAkQsB7QALAARViwEy8bsRMUPlmwAEVYsAYvG7EGDD5ZsABFWLAMLxuxDAw+WbATELEAAbAKK1gh2Bv0WbIJEwYREjmwEdCwEtCwF9CwGNCwDBCxHQGwCitYIdgb9FmyIAwXERI5sCTQMDEBIxYVEAIjIiYnBgYjIgIRNDcjNSEBJichBgcUFjMyETUhFRAzMjYGlX4y19BzrTIzrHPR1zJ0BoH+lAQz/LsyBExGrwEwr0ZMA2yUov7b/ttua2tuASgBIqKUzv38kqShlay2ASHAwP7ftgAAAQAd/+8FwwWwABoAcbITGxwREjkAsABFWLAZLxuxGRg+WbAARViwFS8bsRUMPlmwAEVYsAwvG7EMDD5ZsBkQsQABsAorWCHYG/RZsgQVGRESObAEL7AMELENAbAKK1gh2Bv0WbAEELESAbAKK1gh2Bv0WbAAELAX0LAY0DAxASERNjMgBBUUBgcGITUgNTQmIyIHESERITUhBI3+J4VuAQMBGUdMk/76AQCEe3Vv/tP+lgRwBL3+ox/t12KwP3vj12Z8F/2MBL3zAAEAV//sBPwFxAAeAFiyAx8gERI5ALAARViwCy8bsQsYPlmwAEVYsAMvG7EDDD5ZsAsQsRIBsAorWCHYG/RZshYLAxESObAWL7EXAbAKK1gh2Bv0WbADELEbAbAKK1gh2Bv0WTAxAQYAISAAAzU0EiQzMgAXISYmIyIGByEVIRYWMzI2NwT7Ef7J/v7+6/6+A5QBE7b9ATMY/tQLh4qMlwwBv/5BCo2Vh4wKAeTn/u8BcgE/aNUBP6v+8fSNg7zD8r/FgYcAAAIAKAAACDoFsAAYACEAd7IJIiMREjmwCRCwGdAAsABFWLAXLxuxFxg+WbAARViwCC8bsQgMPlmwAEVYsBAvG7EQDD5ZsgAXCBESObAAL7AXELEKAbAKK1gh2Bv0WbAQELESAbAKK1gh2Bv0WbAAELEZAbAKK1gh2Bv0WbASELAa0LAb0DAxATMyFhYVFAAhIREhAwICBgcjNTc2NhMTIRERMzI2NTQmJwUi8aL8if7R/v/96/58GA9mxKpOMnFhDRkD0O9ziYNvA8F53IvW/vUEvf3+/vz+1YsB8QUP5wEoApz9H/4ih2tlhAMAAgCEAAAIOgWwABMAHAChsgEdHhESObABELAU0ACwAEVYsAIvG7ECGD5ZsABFWLASLxuxEhg+WbAARViwDC8bsQwMPlmwAEVYsBAvG7EQDD5ZsgECDBESObABL7TfAe8BAl20DwEfAQJxtG8BfwECXbR/AY8BAnGyBAIMERI5sAQvsAEQsQ4BsAorWCHYG/RZsAQQsRQBsAorWCHYG/RZsAwQsRUBsAorWCHYG/RZMDEBIREhETMyFhYVFAAHIREhESERIQERMzI2NTQmIwGwAkcBLPKi+on+1/T92v25/tQBLANz8HKKiXQDSgJm/gh32YvU/voDAln9pwWw/Rb+LYNpZoEAAAEAIQAABbcFsAAVAF+yDhYXERI5ALAARViwFC8bsRQYPlmwAEVYsAgvG7EIDD5ZsABFWLAQLxuxEAw+WbAUELEAAbAKK1gh2Bv0WbIEFAgREjmwBC+xDQGwCitYIdgb9FmwABCwEtCwE9AwMQEhETYzIAQXESERNCYjIgcRIREhNSEEef4tgFkBFQEfBP7UepJZgP7U/qcEWAS9/tUS8uT+MgHDgW4S/WAEvfMAAAEAdf6YBRUFsAALAEkAsAkvsABFWLAALxuxABg+WbAARViwBC8bsQQYPlmwAEVYsAYvG7EGDD5ZsABFWLAKLxuxCgw+WbECAbAKK1gh2Bv0WbAD0DAxEyERIREhESERIREhdQEsAkcBLf5U/tL+OgWw+0EEv/pQ/pgBaAACAH8AAATGBbAADAAVAF6yDxYXERI5sA8QsAPQALAARViwCy8bsQsYPlmwAEVYsAkvG7EJDD5ZsAsQsQABsAorWCHYG/RZsgILCRESObACL7ENAbAKK1gh2Bv0WbAJELEOAbAKK1gh2Bv0WTAxASERMyAEFRQAByERIQERMzI2NTQmJwQ4/XbqAQEBLf7V+P3cA7n9du9ziYNyBL3+5vnT1P7/AgWw/QH+QH5qY3MCAAIAGf6aBeAFsAAOABQAXbISFRYREjmwEhCwC9AAsAEvsABFWLALLxuxCxg+WbAARViwAi8bsQIMPlmwARCwBNCwAhCxBgGwCitYIdgb9FmwDdCwDtCwD9CwENCwCxCxEQGwCitYIdgb9FkwMQEhESERIQMzNhI3EyERMyEhESEDAgXI/uv8kv7kEG5ZYREqA7qq+/8CK/6PGR7+mgFm/psCVkoBH9QCgvtBA8z+gf5/AAABABEAAAf6BbAAFQCMALAARViwCS8bsQkYPlmwAEVYsA0vG7ENGD5ZsABFWLARLxuxERg+WbAARViwAi8bsQIMPlmwAEVYsAYvG7EGDD5ZsABFWLAULxuxFAw+WbACELAQ0LAQL7LfEAFdsm8QAV2yQBABXbEAAbAKK1gh2Bv0WbAE0LIIEAAREjmwEBCwC9CyEwAQERI5MDEBIxEhESMBIQEBIQEzESERMwEhAQEhBU6t/tSx/sP+igHG/lABdQFElQEskgE8AXT+WAG//okCUf2vAlH9rwMNAqP9tQJL/bUCS/1e/PIAAQBD/+0ElAXDACkAcrIoKisREjkAsABFWLALLxuxCxg+WbAARViwFy8bsRcMPlmwCxCxAwGwCitYIdgb9FmyKAsXERI5sCgvtG8ofygCXbTfKO8oAl2y/ygBcbElAbAKK1gh2Bv0WbIRJSgREjmwFxCxHwGwCitYIdgb9FkwMQE0JiMiBhUhNDY2MzIEFRQGBxYWFRQEIyImJjUhFBYzMjY1NCYjIzUzNgNQgmtgf/7UhfWR/AEedWx4gP7N/p/+gwEuiGp4i3x3s7nXBB9TX19Mdr1q2MZhpjIqq3/E5229fU5pbFNyY+sDAAABAHgAAAUYBbAACQBFALAARViwAC8bsQAYPlmwAEVYsAcvG7EHGD5ZsABFWLACLxuxAgw+WbAARViwBS8bsQUMPlmyBAACERI5sgkAAhESOTAxASERIREBIREhEQPrAS3+0/25/tQBLAWw+lADx/w5BbD8NwAAAQAoAAAFIgWwABAAT7IEERIREjkAsABFWLAALxuxABg+WbAARViwAS8bsQEMPlmwAEVYsAkvG7EJDD5ZsAAQsQMBsAorWCHYG/RZsAkQsQsBsAorWCHYG/RZMDEBESERIQMCAgYHIzU3NjYTEwUi/tP+fBgPZsSqTjJxYQ0ZBbD6UAS9/f7+/P7ViwHxBQ/nASgCnAAAAQAf/+sE8QWwABAARLIAERIREjkAsABFWLABLxuxARg+WbAARViwDy8bsQ8YPlmwAEVYsAYvG7EGDD5ZsgAGARESObEKAbAKK1gh2Bv0WTAxAQEhAQcGIycnFjMyNjc3ASECpAEJAUT+Aylx6WkDGDY/TRol/gEBQwMAArD7T0/FBPEELDtfBA4AAwBJ/8QGRQXsABcAIAApAEoAsAovsBYvshUWChESObAVL7AA0LILChYREjmwCy+wCNCwCxCxHwGwCitYIdgb9FmwABCxIQGwCitYIdgb9FmwINCwHxCwItAwMQEzMgQSFRAAIRUhNSMiJAI1NBIkNzM1IQEiBhUUFjMzESERMzI2NTQmIwPZEqsBFZr+sf7j/t8Trf7qmZgBEqkcASH+zJWrqpoPASEUk6mmmwUul/7qsf76/rS6upUBDq2vARSbAr7+SbyroLcCvv1CuaCnvgAAAQB1/qEF3AWwAAsAPACwCS+wAEVYsAAvG7EAGD5ZsABFWLAELxuxBBg+WbAARViwCi8bsQoMPlmxAgGwCitYIdgb9FmwBtAwMRMhESERIREzAyERIXUBLAJHAS3HFP7o+8UFsPtBBL/7Qf2wAV8AAAEAiQAABQwFsAARAEeyBRITERI5ALAARViwAC8bsQAYPlmwAEVYsAkvG7EJGD5ZsABFWLABLxuxAQw+WbIOAAEREjmwDi+xBQGwCitYIdgb9FkwMQERIREGIyAkJxEhERYWMzI3EQUM/tOJlf7r/uEEAS0Bd5OViQWw+lACKB3y5QHO/jh9bh0ClgAAAQCAAAAHKgWwAAsASQCwAEVYsAAvG7EAGD5ZsABFWLADLxuxAxg+WbAARViwBy8bsQcYPlmwAEVYsAkvG7EJDD5ZsQEBsAorWCHYG/RZsAXQsAbQMDEBESERIREhESERIREBrQGUAS0BkAEs+VYFsPtBBL/7QQS/+lAFsAAAAQCA/qIH6gWwAA8AVQCwCy+wAEVYsAAvG7EAGD5ZsABFWLADLxuxAxg+WbAARViwBy8bsQcYPlmwAEVYsA0vG7ENDD5ZsQEBsAorWCHYG/RZsAXQsAbQsAnQsArQsALQMDEBESERIREhESERMwMhESERAa0BlAEtAZABLMAU/vT5tgWw+0EEv/tBBL/7OP26AV4FsAAAAgAZAAAF7QWwAAwAFQBhsgEWFxESObABELAN0ACwAEVYsAAvG7EAGD5ZsABFWLAJLxuxCQw+WbICAAkREjmwAi+wABCxCwGwCitYIdgb9FmwAhCxDQGwCitYIdgb9FmwCRCxDgGwCitYIdgb9FkwMRMhETMgBBUUAAchESEBETMyNjU0JicZArzqAQEBLf7V+P3d/nICvO9ziYNyBbD98/nT1P7/AgTG/ev+QH5qY3MCAAMAhQAABnQFsAAKAA4AFwBvsgIYGRESObACELAM0LACELAT0ACwAEVYsAkvG7EJGD5ZsABFWLANLxuxDRg+WbAARViwBy8bsQcMPlmwAEVYsAsvG7ELDD5ZsgAJBxESObAAL7EPAbAKK1gh2Bv0WbAHELEQAbAKK1gh2Bv0WTAxATMgBBUUAAchESEBIREhAREzMjY1NCYnAbPqAQEBLf7V+P3dAS4Ewf7UASz7P+9ziYNyA6P509T+/wIFsPpQBbD9Af5AfmpjcwIAAAIAgAAABMYFsAAKABMAT7INFBUREjmwDRCwAdAAsABFWLAJLxuxCRg+WbAARViwBy8bsQcMPlmyAAkHERI5sAAvsQsBsAorWCHYG/RZsAcQsQwBsAorWCHYG/RZMDEBMyAEFRQAByERIRERMzI2NTQmJwGu6gEBAS3+1fj93QEu73OJg3IDo/nT1P7/AgWw/QH+QH5qY3MCAAABAD7/7ATiBcQAHgBesgMfIBESOQCwAEVYsBMvG7ETGD5ZsABFWLAbLxuxGww+WbEDAbAKK1gh2Bv0WbAbELAJ0LAJL7JvCQFdst8JAV2xBgGwCitYIdgb9FmwExCxDAGwCitYIdgb9FkwMQEWFjMyNjchNSEmJiMiBgchNgAhMgQSFRUQACEgACcBaw2MhZOOC/40AcsMl4yIiAv+1BYBMQEAtgETlP6//uj+/v7JEQHkjXvDv/PDvYGP7wEUq/7B1F/+vv6HARHnAAACAI7/7AczBcQAFwAlAHqyISYnERI5sCEQsBLQALAARViwEy8bsRMYPlmwAEVYsA0vG7ENGD5ZsABFWLAELxuxBAw+WbAARViwCi8bsQoMPlmyDwoNERI5fLAPLxixCAGwCitYIdgb9FmwExCxGwGwCitYIdgb9FmwBBCxIgGwCitYIdgb9FkwMQEUAgQjIiQCJyMRIREhETM2EiQzMgQSFSU0JiMiBgcVFBYzMjY3BzOY/uW3p/73pROn/tQBLKIJnQEVsLYBG5v+0KSYl6QBpJqXogECt9f+vLCRARC2/b0FsP18xQEupa/+udYB5e7r40ff9u3jAAL/5AAABFAFsAAMABQAY7IQFRYREjmwEBCwCtAAsABFWLAKLxuxChg+WbAARViwAC8bsQAMPlmwAEVYsAMvG7EDDD5ZshEKABESObARL7EBAbAKK1gh2Bv0WbIFAREREjmwChCxEgGwCitYIdgb9FkwMSERIwEhASYRNCQ3IREBFBYzMxEjIgMj9P75/rwBN+EBGPsCA/0Wd3fPz+4CDf3zAm18AQXW6gL6UAPYem4BzQACAFT/6wRQBhYAGQAmAFayDicoERI5sA4QsBrQALAARViwES8bsREaPlmwAEVYsAcvG7EHDD5ZsgAHERESObAAL7IYAAcREjmxGgGwCitYIdgb9FmwBxCxIAGwCitYIdgb9FkwMQEyEhUVFAAjIgARNRISNzY2NTMUBgcGBgc2FyIGFRQWMzI2NzU0JgKI0Pj+7Onq/usC8/SASuqp2ICUGoqFZ3VybGlyAXUD/v7s7Q7q/uYBMQEGMAFtAZ02HDcxnZ4rGpaIhuqKm4qRjooYhYsAAAMAggAABEYEOgAOABUAHQCHsgIeHxESObACELAR0LACELAc0ACwAEVYsAEvG7EBFD5ZsABFWLAALxuxAAw+WbIWAAEREjl8sBYvGLTQFuAWAl20cBaAFgJxtEAWUBYCXbIQFgFysQ8IsAorWCHYG/RZsggPFhESObAAELEQAbAKK1gh2Bv0WbABELEcAbAKK1gh2Bv0WTAxMxEhMhYVFAYHFhYVFAYjAxUzMjU0JyczNjU0JiMjggHE3exjX3SF49jo6ZmS8LOYU1WjBDqckkt3IBaBXpeeAcHaa20CwgJgOzIAAAEAbwAAA1AEOgAFACwAsABFWLAELxuxBBQ+WbAARViwAi8bsQIMPlmwBBCxAAGwCitYIdgb9FkwMQEhESERIQNQ/kD+3wLhA1D8sAQ6AAIAIf67BOoEOgAOABQAXbISFRYREjmwEhCwC9AAsAkvsABFWLAELxuxBBQ+WbAARViwCi8bsQoMPlmxAAGwCitYIdgb9FmwBtCwB9CwCRCwDNCwBxCwD9CwENCwBBCxEQGwCitYIdgb9FkwMTc2NjcTIREzESERIREhESEhESMHAn5iRgQIAxyc/t/9f/7ZAbIBW+ECCelozLsBYvyv/dIBRf67Ai4CYoL+1gABACcAAAa6BDoAFQCCALAARViwCS8bsQkUPlmwAEVYsA0vG7ENFD5ZsABFWLARLxuxERQ+WbAARViwAi8bsQIMPlmwAEVYsAYvG7EGDD5ZsABFWLAULxuxFAw+WbACELAQ0LAQL7LfEAFdsQABsAorWCHYG/RZsATQsggQABESObAQELAL0LITABAREjkwMQEjESERIwMhAQEhEzMRIREzEyEBASEEgIP+34HX/qMBVf6vAWbhagEhbOIBZv6xAVj+nQGR/m8Bkf5vAjYCBP5sAZT+bAGU/gP9wwAAAQBF/+wD2wRNACYAhLIDJygREjkAsABFWLAKLxuxChQ+WbAARViwFS8bsRUMPlmwChCxAwGwCitYIdgb9FmyBgoVERI5siUVChESOXywJS8YtEAlUCUCXbTQJeAlAl20cCWAJQJxsSIIsAorWCHYG/RZshAiJRESObIZFQoREjmwFRCxHAGwCitYIdgb9FkwMQE0JiMiBhUhNDYzMhYVFAYHFhUUBiMiJjUhFBYzMjY1NCYjIzUzNgKnS0VHWf7f9L7R71dPuf/Uxf4BIWJPTVZSUp2nhwL7OT87NpO4pJdIeSRBupWxuJw3REg6Rz28BAABAG8AAAQcBDoACQBFALAARViwAC8bsQAUPlmwAEVYsAcvG7EHFD5ZsABFWLACLxuxAgw+WbAARViwBS8bsQUMPlmyBAcCERI5sgkHAhESOTAxASERIREBIREhEQL7ASH+3/6W/t4BIgQ6+8YCnP1kBDr9ZQAAAQCCAAAEhAQ6AAwAWACwAEVYsAQvG7EEFD5ZsABFWLAILxuxCBQ+WbAARViwAi8bsQIMPlmwAEVYsAsvG7ELDD5ZsAIQsAbQsAYvst8GAV2xAQGwCitYIdgb9FmyCgEGERI5MDEBIxEhESERMxMhAQEhAhd0/t8BIWfsAW3+ngGD/n8Bj/5xBDr+aQGX/f39yQABABYAAAQcBDoADwBPsgQQERESOQCwAEVYsAAvG7EAFD5ZsABFWLABLxuxAQw+WbAARViwCC8bsQgMPlmwABCxAwGwCitYIdgb9FmwCBCxCgGwCitYIdgb9FkwMQERIREjAwIGByMnNzY2NxMEHP7f/xIRsK5iAyROSAkUBDr7xgNQ/rL+9fQD6wMGrM8BywABAIIAAAWHBDoADABZALAARViwAS8bsQEUPlmwAEVYsAsvG7ELFD5ZsABFWLADLxuxAww+WbAARViwBi8bsQYMPlmwAEVYsAkvG7EJDD5ZsgALAxESObIFCwMREjmyCAsDERI5MDEBASERIREBIwMRIREhAwIBGwFq/t/+/cL+/t8BZwFVAuX7xgKY/WgCjf1zBDoAAQBvAAAEGQQ6AAsAVACwAEVYsAYvG7EGFD5ZsABFWLAKLxuxChQ+WbAARViwAC8bsQAMPlmwAEVYsAQvG7EEDD5ZsgkAChESOXywCS8YskAJAV2xAgGwCitYIdgb9FkwMSEhESERIREhESERIQQZ/t7+mf7fASEBZwEiAaD+YAQ6/k4BsgABAG8AAAQcBDoABwA5ALAARViwBi8bsQYUPlmwAEVYsAAvG7EADD5ZsABFWLAELxuxBAw+WbAGELECAbAKK1gh2Bv0WTAxISERIREhESEEHP7e/pb+3wOtA1D8sAQ6AAABAB8AAAPxBDoABwAyALAARViwBi8bsQYUPlmwAEVYsAIvG7ECDD5ZsAYQsQABsAorWCHYG/RZsATQsAXQMDEBIREhESE1IQPx/qX+3v6rA9IDUvyuA1LoAAADAET+YAWUBgAAGgAlAC8AgbIHMDEREjmwBxCwINCwBxCwKtAAsAYvsABFWLADLxuxAxQ+WbAARViwCi8bsQoUPlmwAEVYsBMvG7ETDj5ZsABFWLAQLxuxEAw+WbAARViwFy8bsRcMPlmwChCxHgGwCitYIdgb9FmwEBCxIwGwCitYIdgb9FmwKNCwHhCwLdAwMRMQEjMyFxEhETYzMhIRFAIjIicRIREGIyICJyU0JiMiBxEWMzITJRAzMjcRJiMiBkTVu0k8ASE+S7zV1rlNPv7fPEuv1AoELWJZHCEcI6oO/PS3JhchGllgAhUBBQE0HQHP/jAe/s3+5fX+4Rz+WAGnGwEG5D+irQf9fQYBAir+1QUCgwepAAABAG/+vwS+BDoACwA8ALAIL7AARViwAC8bsQAUPlmwAEVYsAQvG7EEFD5ZsABFWLAKLxuxCgw+WbECAbAKK1gh2Bv0WbAG0DAxEyERIREhETMDIREhbwEhAWoBIqIU/vP80gQ6/K8DUfyt/dgBQQAAAQBYAAAD/wQ6ABEAR7IEEhMREjkAsABFWLAILxuxCBQ+WbAARViwEC8bsRAUPlmwAEVYsAAvG7EADD5Zsg0QABESObANL7EEAbAKK1gh2Bv0WTAxISERBiMiJicRIREWFjMyNxEhA//+31FG9fgCASEBWnNITwEhAVQP0MgBXf6jXlERAfsAAAEAbwAABiUEOgALAEkAsABFWLAALxuxABQ+WbAARViwAy8bsQMUPlmwAEVYsAcvG7EHFD5ZsABFWLAJLxuxCQw+WbEBAbAKK1gh2Bv0WbAF0LAG0DAxAREhESERIREhESERAZABKQEiASkBIfpKBDr8rwNR/K8DUfvGBDoAAAEAbP6/BvkEOgAPAEwAsAwvsABFWLAALxuxABQ+WbAARViwAy8bsQMUPlmwAEVYsAcvG7EHFD5ZsABFWLANLxuxDQw+WbEBAbAKK1gh2Bv0WbAF0LAJ0DAxAREhESERIREhETMDIREhEQGNASkBIgEoASLXFP7z+pQEOvyvA1H8rwNR/K392AFBBDoAAgAhAAAFFwQ6AA0AFgBhsgEXGBESObABELAO0ACwAEVYsAAvG7EAFD5ZsABFWLAKLxuxCgw+WbICAAoREjmwAi+wABCxDAGwCitYIdgb9FmwAhCxDgGwCitYIdgb9FmwChCxDwGwCitYIdgb9FkwMRMhETMyFhYVFAYjIREhAREzMjY1NCYjIQJWz4zUcf3a/hb+ywJWzVZcWlgEOv7DXq90q9EDUP7F/tJQRUZTAAADAIIAAAYQBDoACwAPABgAb7IHGRoREjmwBxCwDdCwBxCwFNAAsABFWLAKLxuxChQ+WbAARViwDi8bsQ4UPlmwAEVYsAgvG7EIDD5ZsABFWLAMLxuxDAw+WbIADggREjmwAC+xEAGwCitYIdgb9FmwCBCxEQGwCitYIdgb9FkwMQEzMhYWFRQGIyERIQEhESEBETMyNjU0JiMBpM+M1HH92v4VASIEbP7fASH7lM1WXFpYAv1er3Sr0QQ6+8YEOv3b/tJQRUZTAAIAggAABEQEOgALABQAT7IIFRYREjmwCBCwDtAAsABFWLAKLxuxChQ+WbAARViwCC8bsQgMPlmyAAoIERI5sAAvsQwBsAorWCHYG/RZsAgQsQ0BsAorWCHYG/RZMDEBMzIWFhUUBiMhESERETMyNjU0JiMBpM+M1HH92v4VASLNVlxaWAL9Xq90q9EEOv3b/tJQRUZTAAEAP//sA+4ETgAeAG+yEB8gERI5ALAARViwCC8bsQgUPlmwAEVYsBAvG7EQDD5ZsAgQsQABsAorWCHYG/RZsgMIEBESObIUEAgREjmwEBCxFwGwCitYIdgb9FmyHQgQERI5fLAdLxi0QB1QHQJdsRoIsAorWCHYG/RZMDEBIgYVITQ2NjMyABEVFAYGIyImNSEUFjMyNjchNSEmAflOXP7wdct65QEQeOOYyPQBEF1PV2oM/t4BIh0DZFdJbrZm/tX+/hOg+YnmwFNre3mx6wACAIb/7AY8BE4AEwAfAI2yFCAhERI5sBQQsAzQALAARViwBC8bsQQUPlmwAEVYsBMvG7ETFD5ZsABFWLAQLxuxEAw+WbAARViwCy8bsQsMPlmyARATERI5fLABLxi0kAGgAQJdskABAV20AAEQAQJdsQ4BsAorWCHYG/RZsAsQsRcBsAorWCHYG/RZsAQQsR0BsAorWCHYG/RZMDEBMzYkMzIAFxcUACMiJCcjESERIQEUFjMyNjU0JiMiBgGonCABC8vbARUQAv7q6tP+8xuZ/t4BIgG0dGxrdHZranQCm8rp/vTmSvn+0/TR/k8EOv3YmqOisJempQAAAgApAAAD9QQ6AA0AFQBjsgQWFxESObAEELAR0ACwAEVYsAAvG7EAFD5ZsABFWLABLxuxAQw+WbAARViwBS8bsQUMPlmyDwABERI5sA8vsQMBsAorWCHYG/RZsgcDDxESObAAELEQAbAKK1gh2Bv0WTAxAREhESMDIRMmJjU0NjcTMxEjIgYUFgP1/uC30P7b7GFp88wFxrxNYFwEOvvGAXb+igGnLZpinckE/gYBElF0TAAAAf/M/ksEDwYAACEAirIOIiMREjkAsB8vsABFWLAELxuxBBQ+WbAARViwGC8bsRgMPlmwAEVYsAovG7EKDj5Zsr8fAV2yLx8BXbIPHwFdsiEfGBESObAhL7EAB7AKK1gh2Bv0WbICBBgREjmwChCxDwGwCitYIdgb9FmwBBCxFQGwCitYIdgb9FmwABCwGtCwIRCwHdAwMQEjFTYzIBMRFAYjIic3FjMyNRE0JiMiBxEhESM1MzUhFTMCh/5zrgFgBci0TkEOKzh5UF1/Of7fnJwBIf4EpeGK/mf9KcHSEeUMsALHXlli/P8EpbekpAAAAQBA/+wD9QROAB0AgrIWHh8REjkAsABFWLAPLxuxDxQ+WbAARViwCC8bsQgMPlmxAAGwCitYIdgb9FmyBAgPERI5shMPCBESObAPELEWAbAKK1gh2Bv0WbIZDwgREjl8sBkvGLKPGQFytO8Z/xkCcbQfGS8ZAnGyrxkBcrK/GQFxsRoIsAorWCHYG/RZMDElMjY3IQ4CIyIAETU0ADMyFhchJiYjIgchFSEWFgIvUGQCARABd8185v7yAQrpyvYC/vACZFG8DwEx/tEMY9VYSW+2ZQEmAQQU+gEq58BWZ/uxdW4AAgAVAAAGsgQ6ABYAHwB9sgggIRESObAIELAX0ACwAEVYsBUvG7EVFD5ZsABFWLAHLxuxBww+WbAARViwDi8bsQ4MPlmyABUHERI5sAAvsBUQsQkBsAorWCHYG/RZsA4QsRABsAorWCHYG/RZsAAQsRcBsAorWCHYG/RZsAcQsRgBsAorWCHYG/RZMDEBMzIWFRQGIyERIwMCBgcjJzc2NjcTIRERMzI2NTQmIwQSxuH5/Nv+FfUSEa2saAIkTkgJFAMmzVZcXFYC5MqnqMsDUP6y/vf0BesDBqzPAcv9wv7rTUE+SQACAG8AAAa5BDoAEgAbAJqyARwdERI5sAEQsBPcALAARViwEi8bsRIUPlmwAEVYsAIvG7ECFD5ZsABFWLAPLxuxDww+WbAARViwDC8bsQwMPlmyAA8SERI5fLAALxiyQAABXbQAABAAAl20kACgAAJdsgQMAhESObAEL7AAELEOAbAKK1gh2Bv0WbAEELETAbAKK1gh2Bv0WbAMELEUAbAKK1gh2Bv0WTAxASERIREzMhYVFAYjIREhESERIQERMzI2NTQmIwGQAWcBIsbh+fzb/hX+mf7fASECic1WXFxWApgBov6qyqeoywGw/lAEOv3C/utNQT5JAAH/2gAABA8GAAAYAHayDBkaERI5ALAVL7AARViwBC8bsQQUPlmwAEVYsAcvG7EHDD5ZsABFWLAPLxuxDww+WbIvFQFdsg8VAV2yGA8VERI5sBgvsQAHsAorWCHYG/RZsgIEBxESObAEELEMAbAKK1gh2Bv0WbAAELAR0LAYELAT0DAxASEVNjMgExEhETQmIyIHESERIzUzNSEVIQKV/vRzrgFgBf7fUF1/Of7fjo4BIQEMBLHtiv5n/UsCrV1ZYvz/BLG3mJgAAQBv/pkEHAQ6AAsARgCwCC+wAEVYsAAvG7EAFD5ZsABFWLADLxuxAxQ+WbAARViwBS8bsQUMPlmwAEVYsAkvG7EJDD5ZsQEBsAorWCHYG/RZMDEBESERIREhESERIREBkAFqASL+uv7f/roEOvyvA1H7xv6ZAWcEOgABAHf/6wcTBbAAHABhsgYdHhESOQCwAEVYsAAvG7EAGD5ZsABFWLAMLxuxDBg+WbAARViwFC8bsRQYPlmwAEVYsAQvG7EEDD5ZsABFWLAILxuxCAw+WbIGAAQREjmxEAGwCitYIdgb9FmwGNAwMQERFAAjIicGIyIANREhERAzMjY1ESERFDMyNjURBxP+9ufleHjm5f71AS3DXGsBLsZbaQWw/CPh/vmiogEG4wPc/Cz/AHWAA9/8Kv51gAPfAAABAGT/6wZABDoAGwBhsgccHRESOQCwAEVYsAAvG7EAFD5ZsABFWLANLxuxDRQ+WbAARViwFC8bsRQUPlmwAEVYsAQvG7EEDD5ZsABFWLAJLxuxCQw+WbIHFAQREjmxEQGwCitYIdgb9FmwGNAwMQERBgYHIyInBiMiJicRIREWMzI3ESERFjMyNxEGQALrygLJam7Nx+sDASIEj6kDASIFm5MEBDr9ftf1AZCQ9NUChv123OAChv1z2dsCiwAAAv/lAAAEQwYZABEAGgB0shQbHBESObAUELAD0ACwAEVYsA4vG7EOGj5ZsABFWLAILxuxCAw+WbIRDggREjmwES+xAAewCitYIdgb9FmyAg4IERI5sAIvsAAQsArQsBEQsAzQsAIQsRIBsAorWCHYG/RZsAgQsRMBsAorWCHYG/RZMDEBIREzFhYQBgchESM1MxEhESEBETMyNjU0JicCpP8A09T49tH+Bp2dASIBAP8AzVdbV1QEOv7cAtb+ntkDBDq3ASj+2P09/rlYTUhYAgAAAQB9/+0G+gXFACMAfrINJCUREjkAsABFWLAjLxuxIxg+WbAARViwBS8bsQUYPlmwAEVYsCAvG7EgDD5ZsABFWLAbLxuxGww+WbIAIyAREjmwAC+wBRCxCwGwCitYIdgb9FmwABCwDtCwABCxHwGwCitYIdgb9FmwENCwGxCxFAGwCitYIdgb9FkwMQEzNhIkMzIAFyEmJiAGByEVIRYWMzI2NyEGACMgAAMjESERIQGprw6dAQeo/AE0GP7UC4f+7JQNAa3+UgiQkYqJCgEsEf7H//7z/sIOrf7UASwDXLwBGZT+8vSNf7a96tDAfYfr/vIBWgEr/Y4FsAAAAQB1/+wFzgROACEAnLIDIiMREjkAsABFWLAELxuxBBQ+WbAARViwIC8bsSAUPlmwAEVYsB4vG7EeDD5ZsABFWLAZLxuxGQw+WbIOIB4REjl8sA4vGLRADlAOAl200A7gDgJdsADQsgcEGRESObAEELELAbAKK1gh2Bv0WbAOELEPCLAKK1gh2Bv0WbAZELESAbAKK1gh2Bv0WbIVGQQREjmwDxCwHNAwMQEzNiQzMhYXISYmIyIHIRUhFjMyNjchBgYjIiQnIxEhESEBl4cWAQTUyvYC/vECZFKxGAFF/roTuFBlAgEPAv+/1f74FIb+3gEiAnra+ufAVGnqt+5ZSKnh+9z+PQQ6AAACAA8AAAVHBbAACwAOAFcAsABFWLAILxuxCBg+WbAARViwAi8bsQIMPlmwAEVYsAYvG7EGDD5ZsABFWLAKLxuxCgw+WbINCAIREjmwDS+xAAGwCitYIdgb9FmwBNCyDggCERI5MDEBIxEjESMDIQEhASEBIQMDgmD6VYn+xQIBATgB//7F/gsBJ5MBo/5dAaP+XQWw+lACcwHBAAACAAcAAARiBDoACwAQAFcAsABFWLAILxuxCBQ+WbAARViwAi8bsQIMPlmwAEVYsAYvG7EGDD5ZsABFWLAKLxuxCgw+WbINAggREjmwDS+xAQiwCitYIdgb9FmwBNCyDwgCERI5MDEBIxEjESMDIQEhASEBMycnBwLcTb9FXf7ZAZkBKQGZ/tn+kc5JHh4BDf7zAQ3+8wQ6+8YBydKAgAAAAgCTAAAHaAWwABMAFgB9ALAARViwAi8bsQIYPlmwAEVYsBIvG7ESGD5ZsABFWLAELxuxBAw+WbAARViwCC8bsQgMPlmwAEVYsAwvG7EMDD5ZsABFWLAQLxuxEAw+WbIVAgQREjmwFS+wANCwFRCxBgGwCitYIdgb9FmwCtCwBhCwDtCyFgIEERI5MDEBIQEhASEDIxEjESMDIRMhESERIQEhAwG/AU0BJQE4Af/+xYpg+lSK/sWT/vz+1AEsAnoBJpMCcgM++lABo/5dAaP+XQGj/l0FsPzDAb8AAAIAfgAABksEOgATABgAgACwAEVYsAIvG7ECFD5ZsABFWLASLxuxEhQ+WbAARViwBC8bsQQMPlmwAEVYsAgvG7EIDD5ZsABFWLAMLxuxDAw+WbAARViwEC8bsRAMPlmyABASERI5sAAvsAHQsQ4IsAorWCHYG/RZsAvQsAfQsAEQsBTQsBXQshcSBBESOTAxATMTIQEhAyMRIxEjAyETIxEhESEBMycnBwGg/O0BKAGa/tlfTb9FXf7YZrX+3gEiAhXOSR4eAcgCcvvGAQ3+8wEN/vMBDf7zBDr9j9KAgAAAAgBtAAAGiwWwABkAHAB8shodHhESObAaELAM0ACwAEVYsBgvG7EYGD5ZsABFWLAELxuxBAw+WbAARViwCy8bsQsMPlmwAEVYsBIvG7ESDD5ZshcYBBESObAXL7AA0LAXELEJAbAKK1gh2Bv0WbAN0LAO0LIaGAQREjmwGBCxGwGwCitYIdgb9FkwMQEWFhcRIREmJicjESERIyIGBxEhETYkJQEhARMhBJ348QX+1AFpelv+1GuCbQH+1AEBAQEO/owFCv17vP6IAx8I3df+nQFXcWEC/dUCK2Nx/qkBVebjAgKQ/Z4BbAAAAgBvAAAFbwQ6ABgAGwB1shkcHRESObAZELAL0ACwFi+wAEVYsBcvG7EXFD5ZsABFWLAELxuxBAw+WbAARViwCi8bsQoMPlmwAEVYsBEvG7ERDD5ZsBYQsADQsBYQsQwBsAorWCHYG/RZsAnQshkXBBESObAXELEaAbAKK1gh2Bv0WTAxARYWFRUhNSYmIxEhESMiBgcVITU2NjcBIQETIwP4wbb+3wFYcf7fFmdVAf7fAr/E/u8EJv3tfvsCYBbWv7W9b1z+eAGIXm68vsPOEwHY/jsBBgAAAgCVAAAI4AWwAB8AIgCisgojJBESObAKELAi0ACwAEVYsAcvG7EHGD5ZsABFWLALLxuxCxg+WbAARViwAC8bsQAMPlmwAEVYsAUvG7EFDD5ZsABFWLARLxuxEQw+WbAARViwGC8bsRgMPlmyCQcAERI5sAkvsQMBsAorWCHYG/RZsAkQsA3QsRYBsAorWCHYG/RZsBrQsBvQsiAHABESObALELEhAbAKK1gh2Bv0WTAxIRE0NyERIREhESEBIQEWFhcRIREmJicjESERIyIGBxEBEyECwiv+1P7UASwDD/6OBQr+ivjxBf7UAWl6W/7Ua4JtAQH1vP6IAVKEYv3IBbD9dAKM/W8I3df+nQFXcWEC/dUCK2Nx/qkDTgFsAAIAhgAAB50EOgAeACEAmbIbIiMREjmwGxCwIdAAsABFWLAHLxuxBxQ+WbAARViwCy8bsQsUPlmwAEVYsAAvG7EADD5ZsABFWLAFLxuxBQw+WbAARViwES8bsREMPlmwAEVYsBcvG7EXDD5ZsgkLABESObAJL7EEAbAKK1gh2Bv0WbAJELAN0LAEELAa0LAW0LIfCwAREjmwCxCxIAGwCitYIdgb9FkwMSE1NDchESERIREhASEBFhYVFSE1NCYjESERIyIGBxUBEyMCnCj+4/7fASECef7xBCb+78G2/t5VdP7fFmhVAQFnffq1gFv+cAQ6/iwB1P4mFta/tbdxYP54AYhebrwCdQEGAAACAAf+QAOyB4gAKAAxAKyyHzIzERI5sB8QsCnQALAuL7AARViwBS8bsQUYPlmwAEVYsBcvG7EXDj5ZsABFWLARLxuxEQw+WbAFELEEAbAKK1gh2Bv0WbIlEQUREjl8sCUvGLQwJUAlAl2ygCUBXbSgJbAlAl2xJAGwCitYIdgb9FmyCyQlERI5sBEQsR4BsAorWCHYG/RZsg8uAV2wLhCwMdCwMS+0DzEfMQJdsikuMRESObAq0LAqLzAxATQmIyE1ISAEFRQHFhYVFAQjIwYVFBcHJiYnNDY3MzY2NTQhIzUzNjYDNzMVASMBNTMCZG93/vsBAgEAAQvkhIz+8fA4bZFSmqoCtKlKaHr+6YufZ3B5kvf+0rf+0vcEGExb8ca27V0qq33G5wJcYjqxI8CSjJkCAWVS3PECXgM4jwv+5wEbCQACABz+UAOYBgUAJQAuAKeyHS8wERI5sB0QsCbQALArL7AARViwBC8bsQQUPlmwAEVYsA8vG7EPDD5ZsABFWLAVLxuxFQ4+WbAEELEDAbAKK1gh2Bv0WbIjBA8REjl8sCMvGLRAI1AjAl200CPgIwJdsSIIsAorWCHYG/RZsgoiIxESObAPELEcAbAKK1gh2Bv0WbIPKwFdsCsQsC7QsC4vtA8uHy4CXbImKy4REjmwJ9CwJy8wMQE0IyM1IRYWFRQHFhUUBgcjBhUUFwcmJic0NjMzMjY1NCMjNTMyAzczFQEjATUzAkrT/gEP7faw3ffRPnyBUYigAqiiNWF78Jmdv3OT9v7Stv7R9wL1ctMCm42pS0Kqla4CAlxjOaEswXh9i0Q5hbQDA48L/ucBGgoAAwBa/+wFMgXEABAAFwAeAIWyGB8gERI5sBgQsATQsBgQsBHQALAARViwDC8bsQwYPlmwAEVYsAQvG7EEDD5ZsREBsAorWCHYG/RZshsMBBESObAbL7RsG3wbAl2yzBsBXbQMGxwbAnGynBsBXbJsGwFxtCwbPBsCcrEVCLAKK1gh2Bv0WbAMELEYAbAKK1gh2Bv0WTAxARQCBCMiJAInNTQSJCAEEhUBMjY3IRYWEyIGByEmJgUymP7lt7X+5JwBmwEbAWwBG5v9lo6hCv2KC6ONjqELAnULowK31/68sK4BQ9JI1wFHr6/+udb96tTKytQD6s/Hx88AAAMAQP/sBEEETgAPABYAHQBwsgweHxESObAMELAQ0LAMELAX0ACwAEVYsAQvG7EEFD5ZsABFWLAMLxuxDAw+WbAEELEQAbAKK1gh2Bv0WbIUBAwREjl8sBQvGLRAFFAUAl2wDBCxFwGwCitYIdgb9FmwFBCxGgiwCitYIdgb9FkwMRM0NjYzMgARFRQGBiMiACcBIgYHISYmAzI2NyEWFkB96pnqARd955vg/uoLAf9bcg0BtQ5xWltuEP5MDXACJ6L8if7T/vwLovyIARbsAXZ+cXV6/XF3cm96AAABAAsAAAUIBcIADwBHsgEQERESOQCwAEVYsAYvG7EGGD5ZsABFWLAPLxuxDxg+WbAARViwDC8bsQwMPlmyAQYMERI5sAYQsQkBsAorWCHYG/RZMDEBFzcTNjYzFwcjIgcBIQEhAnkTE885sognAhtWI/62/sn+GgE+AYtbVwLbuacB/Hb7sQWwAAABABEAAAQkBE4AEQBHsgISExESOQCwAEVYsAYvG7EGFD5ZsABFWLAQLxuxEBQ+WbAARViwDi8bsQ4MPlmyARAOERI5sAYQsQoBsAorWCHYG/RZMDEBFzcTNjYzMhcHJyIGBwMhASEB4hQTXTCmgUEmGDImPA3q/uz+pAEuAZ1qagFjoa0S5QQ8LP0NBDoAAgBa/3kFMgYnABQAJwBXsgYoKRESObAGELAh0ACwAEVYsA4vG7EOGD5ZsABFWLAHLxuxBww+WbAE0LAOELAR0LAOELEbAbAKK1gh2Bv0WbAY0LAHELEhAbAKK1gh2Bv0WbAk0DAxARQCBgcVIzUmABE1EAA3NTMVFgARJTQmJxUjNQYRFRQWFzUzFTY2NQUygO6gxO7+6AEW7sPyAR/+0XVtw9RuaMRscwK3w/7NuRZ5eyMBfAEpOwElAXsla2kh/oX+zwjA5SFmYkz+gTm65SVdYSLnvwAAAgBC/4UEQwSzABMAIwBasg0kJRESObANELAU0ACwAEVYsAMvG7EDFD5ZsABFWLAQLxuxEAw+WbADELAG0LAQELAN0LEUAbAKK1gh2Bv0WbADELEdAbAKK1gh2Bv0WbAa0LAUELAh0DAxEzQSNzUzFRYSFRUUAgcVIzUmAjUBNjU1NCYnFSM1BhEUFzUzQufIp8Tn6cimxuQCUJBHQ6eOiaYCJ98BKBtqaxv+2+cP4v7aGWxtGwEl5v7LOf0OdJsdYWM4/vXyO24AAAMAd//rBwIHJQAqAD4ARwCpsjBISRESObAwELAJ0LAwELBG0ACwAEVYsBIvG7ESGD5ZsABFWLALLxuxCww+WbASELAA0LALELAH0LASELETAbAKK1gh2Bv0WbALELEaAbAKK1gh2Bv0WbIeCxIREjmwI9CwExCwKtCwEhCwNtCwNi+wLNCwLC+xKwqwCitYIdgb9FmwLBCwMtCwMi+xOQqwCitYIdgb9FmwNhCwQtCwQi+wR9CwRy8wMQEyABURFAAjIicGIyIANRE0ADMVIgYVERQWMzI2NREhERQWMzI2NRE0JiMTFSMiLgIjIhUVIzU0MzIeAhcBNjc1MxUUBgcFEuMBDf715d15edzl/vUBDeNZampZXGsBHWtcWGtrWG8UUorJLBZmheg5bHl6Sv3YQQOpYDsFsP726f4b4/72l5cBCuUB5+UBCvN5g/4Xg3l1gAFe/qKAdXmDAemDeQHwhiJNCWkPItwlLyMB/otSPGhnMXgfAAADAGz/6wYGBdMAKQA8AEUAsLIJRkcREjmwCRCwMNCwCRCwRNAAsABFWLASLxuxEhQ+WbAARViwCy8bsQsMPlmwEhCwANCwCxCwB9CyCQsSERI5sBIQsRMBsAorWCHYG/RZsAsQsRoBsAorWCHYG/RZsh0LEhESObAi0LATELAp0LASELA10LA1L7Ar0LArL7EqCrAKK1gh2Bv0WbArELAx0LAxL7E5CrAKK1gh2Bv0WbA1ELBA0LBAL7BF0LBFLzAxATIWFxUUBiMiJwYjIiYnNTQ2MxUiBhUVFBYzMjU1IRUUFjMyNjU1NCYjExUjIiYnJiMiFRUjNTQ2MzIEFwE2NzUzFRQGBwQ70vgB6cW7ZGa5xeYD+NNNXE0/lQEUUUQ/TV1MzBhYmJczKmiFfG1TARt2/d5BA6lgOwRL9tfE1/iUlPTRzNf46W93wnhu8JqgenBueMJ3bwH5hik7FGgQJXBpdwH+kVI8aGcxeB8AAAIAd//rBxMHHAAcACQAebIGJSYREjmwBhCwIdAAsABFWLANLxuxDRg+WbAARViwCC8bsQgMPlmwBNCwDRCwFNCwFC+yBggUERI5sAgQsRABsAorWCHYG/RZsBjQsBQQsBzQsBwvsBQQsCPQsCMvsCTQsCQvsR4KsAorWCHYG/RZsCQQsCHQMDEBERQAIyInBiMiADURIREQMzI2NREhERQzMjY1ESU1IRchFSM1BxP+9ufleHjm5f71AS3DXGsBLsZbafwnA3QC/pa1BbD8I+H++aKiAQbjA9z8LP8AdYAD3/wq/nWAA9/nhYV/fwACAGT/6wZABbEAGwAjAIiyByQlERI5sAcQsCLQALAARViwAC8bsQAUPlmwAEVYsA0vG7ENFD5ZsABFWLAULxuxFBQ+WbAARViwBC8bsQQMPlmwAEVYsAkvG7EJDD5ZsgcUBBESObERAbAKK1gh2Bv0WbAY0LAUELAi0LAiL7Aj0LAjL7EdCrAKK1gh2Bv0WbAjELAg0DAxAREGBgcjIicGIyImJxEhERYzMjcRIREWMzI3ESU1IRchFSM1BkAC68oCyWpuzcfrAwEiBI+pAwEiBZuTBPyaAzgG/q+0BDr9ftf1AZCQ9NUChv123OAChv1z2dsCi/GGhn9/AAABAFn+lwSrBcUAGQBLshgaGxESOQCwAC+wAEVYsAovG7EKGD5ZsABFWLACLxuxAgw+WbAKELAO0LAKELERAbAKK1gh2Bv0WbACELEZAbAKK1gh2Bv0WTAxASERJgI1ETQSJDMgABUhNCYjIgYVERQWFzMDTv7U0veLAQKlAQUBG/7UcoJ6jIt5xf6XAVwiAT7zASavAROX/vz3iX++rP7apMEBAAEAVv6TBAQETgAXAEKyCRgZERI5ALAARViwCS8bsQkUPlmwAEVYsAIvG7ECDD5ZsAkQsRABsAorWCHYG/RZsAIQsRYBsAorWCHYG/RZMDEBIREmAjU1NAAzMhYVITQmIyIGBxUQMzMDBf7fuNYBDuXJ8v7wXk1kbQHXt/6TAWEeASLhFfgBLOfAU2qcmx/+xgAAAQBrAAAEkQU+ABMAEwCwDi+wAEVYsAQvG7EEDD5ZMDEBBQclAyMTJTcFEyU3BRMzAwUHJQJZASFI/t21r+H+30cBJcr+3kkBI7ms5AElTP7gAcGsgKr+wQGOq4CrAWirgqsBRv5rq3+qAAH8cwSi/0YF/QAHABIAsAAvsQMKsAorWCHYG/RZMDEBFSc3IScXFf0ksQECIgGxBSB+Ae5sAdwAAfx4BRf/cgYVABIAMACwDS+wB9CwBy+xAAqwCitYIdgb9FmwDRCwBNCwBC+wDRCxDgqwCitYIdgb9FkwMQEyFRUjNTQjIgcHBgcjNTI+Av6E7ohqKzJtmXwpW3LPSgYV3CIQaBMpOgKGGk4QAAAB/ZYFGv6NBmsABQAMALABL7AF0LAFLzAxATUzBxcH/Za9ATtSBdyPoWxEAAH9pwUa/p4GawAFAAwAsAMvsADQsAAvMDEBJzcnMxX9+VI7Ab0FGkRsoY8ACPow/sQBywWvAAwAGgAnADUAQgBPAFwAagB/ALBFL7BTL7BgL7A4L7AARViwAi8bsQIYPlmxCQSwCitYIdgb9FmwRRCwENCwRRCxTASwCitYIdgb9FmwF9CwUxCwHtCwUxCxWgSwCitYIdgb9FmwJdCwYBCwK9CwYBCxZwSwCitYIdgb9FmwMtCwOBCxPwSwCitYIdgb9FkwMQE0NjIWFSM0JiMiBhUBNDYzMhYVIzQmIyIGFRM0NjMyFhUjNCYiBhUBNDYzMhYVIzQmIyIGFQE0NjIWFSM0JiMiBhUBNDYyFhUjNCYjIgYVATQ2MzIWFSM0JiIGFRM0NjMyFhUjNCYjIgYV/R1zvnRwMzAuMwHedF1fdXE1LiwzSHVdX3RwNVwz/st0XV90cDUuLTP9T3O+dHAzMC4z/U10vnRwMzAuM/7edV1fdHA1XDM1dV1fdXE1Li0zBPNUaGhULjc1MP7rVGhnVTE0NTD+CVVnaFQxNDcu/flUaGhUMTQ3Lv7kVGhoVC43Ny4FGlRoaFQuNzUw/glVZ2hUMTQ3Lv35VWdnVTE0NTAAAAj6cP5jAa8FxgAEAAkADgATABgAHQAiACcAOQCwIS+wEi+wCy+wGy+wJi+wAEVYsAcvG7EHGD5ZsABFWLAWLxuxFhY+WbAARViwAi8bsQIOPlkwMQUXAyMTAycTMwMBNwUVJQUHJTUFATclFwUBBwUnJQMnAzcTARcTBwP+cwt6YEY6DHpgRgIdDQFN/qb7dQ3+swFaA5wCAUBE/tv88wL+wEUBJisRlEHGA2AQlULEPA7+rQFhBKIOAVL+oP4RDHxiRzsMfGJHAa4QmUTI/I4RmUXIAuQCAUZF/tX84wL+u0cBKwD//wB4/mcF9wcvACYA3AAAACcAoQEHATkBBwAQBHf/1AATALAARViwCC8bsQgYPlmwDdwwMQD//wBv/mcE/QXxACYA8AAAACcAoQCH//sBBwAQA33/1AATALAARViwCC8bsQgUPlmwDdwwMQAAAv/lAAAEQwZPABEAGgB3shQbHBESObAUELAD0ACwAEVYsAwvG7EMGD5ZsABFWLAQLxuxEBg+WbAARViwCC8bsQgMPlmwEBCxAAewCitYIdgb9FmyAgwIERI5sAIvsAAQsArQsAvQsAIQsRIBsAorWCHYG/RZsAgQsRMBsAorWCHYG/RZMDEBIREzFhYQBgchESM1MzUhFSEBETMyNjU0JicCpP8A09T49tH+Bp2dASIBAP8AzVdbV1QE+f4dAtb+ntkDBPm3n5/8fv65WE1IWAIAAgCCAAAE3QWwAA8AHABPshsdHhESObAbELAE0ACwAEVYsAMvG7EDGD5ZsABFWLABLxuxAQw+WbIXAwEREjmwFy+xAAGwCitYIdgb9FmwAxCxFQGwCitYIdgb9FkwMQERIREhMhYWFRQHFwcnBiMTNjU0JichESEyNyc3Aa7+1AI4pPmGinZmhHuq2hp+b/7tAQxCLntmAgH9/wWweN2NznyEW5Q4AVouQ2uEAv43EItbAAIAb/5gBD0ETgATACIAcLIcIyQREjmwHBCwENAAsABFWLAQLxuxEBQ+WbAARViwDS8bsQ0UPlmwAEVYsAovG7EKDj5ZsABFWLAHLxuxBww+WbIJEAcREjmyDhAHERI5sBAQsRcBsAorWCHYG/RZsAcQsRwBsAorWCHYG/RZMDEBEAcXBycGIyInESERIRc2MzISESU0JiMiBxEWMzI3JzcXNgQ9d2VpYldwpGX+3wEMCmmpyN7+32tmiDM1iDsqcGhZGQIT/v+XeFh1NHL+AgXaan7+2P78BpekaP5FaxyHWWxJAAEAfwAABEUHJQAJADOyAwoLERI5ALAARViwBi8bsQYYPlmwAEVYsAQvG7EEDD5ZsAYQsQMBsAorWCHYG/RZMDEBIxUhESERIREhBEUM/XP+0wKlASEExwr7QwWwAXUAAAEAbAAAA3UFdQAHACwAsABFWLAELxuxBBQ+WbAARViwAi8bsQIMPlmwBBCxAAGwCitYIdgb9FkwMQEhESERIREhA3X+GP7fAegBIQNQ/LAEOgE7AAEAhP6sBLQFsAAWAF6yAxcYERI5ALALL7AARViwFS8bsRUYPlmwAEVYsBMvG7ETDD5ZsBUQsQABsAorWCHYG/RZsgMVExESObADL7ALELEMAbAKK1gh2Bv0WbADELERAbAKK1gh2Bv0WTAxASERMyAAERQGBwYjJzI2NRIhIxEhESEEPf1zpAEjAT1HSZD/AX6BAv7Apf7UA7kEvf6H/s3+6H7hUJ7dsq8Bbv2oBbAAAQBs/uID9wQ6ABUATLIKFhcREjkAsAkvsABFWLAULxuxFBQ+WbAARViwEi8bsRIMPlmwFBCxAAGwCitYIdgb9FmyAxQSERI5sAMvsRABsAorWCHYG/RZMDEBIRUzIAAVFgIHJzY2NzQmIyMRIREhA03+QC8BDgErAs6oeGFpAZR/NP7fAuEDULf+/+aT/vs4wSyAY359/lMEOgD//wAR/psIfQWwACYA2gAAAAcCUQcCAAD//wAn/psHLgQ6ACYA7gAAAAcCUQWzAAD//wCE/psFsQWwACYCLAAAAAcCUQQ2AAD//wCC/psE+AQ6ACYA8QAAAAcCUQN9AAAAAQCAAAAFZwWwABQAXQCwAEVYsAAvG7EAGD5ZsABFWLAMLxuxDBg+WbAARViwAi8bsQIMPlmwAEVYsAovG7EKDD5Zsg8KDBESObAPL7EIAbAKK1gh2Bv0WbIBCA8REjmwBdCwDxCwEtAwMQkCIQEjFSM1IxEhESERMxEzETMTBT/+hAGk/oD+9TanUf7SAS5RpyX/BbD9ZvzqAk/k5P2xBbD9swEC/v4CTQABAIIAAATRBDoAFABhALAARViwDS8bsQ0UPlmwAEVYsBQvG7EUFD5ZsABFWLAKLxuxCgw+WbAARViwAy8bsQMMPlmwChCwDtCwDi+y3w4BXbEJAbAKK1gh2Bv0WbIBCQ4REjmwBdCwDhCwEtAwMQkCIQMjFSM1IxEhESERMzUzFTMTBMD+2wE2/o6mL5hP/t8BIU+YLZwEOv3+/cgBj6qq/nEEOv5pvr4BlwAAAQAlAAAGtgWwAA4AYwCwAEVYsAYvG7EGGD5ZsABFWLAKLxuxChg+WbAARViwAi8bsQIMPlmwAEVYsA0vG7ENDD5ZsggGAhESObAIL7EBAbAKK1gh2Bv0WbAGELEEAbAKK1gh2Bv0WbIMAQgREjkwMQEjESERITUhETMBIQEBIQPYrP7T/iYDB4kBZAFu/j8B8P6ZAlP9rQTG6v25Akf9T/0BAAABADoAAAXHBDoADgBnALAARViwBi8bsQYUPlmwAEVYsAovG7EKFD5ZsABFWLACLxuxAgw+WbAARViwDS8bsQ0MPlmwAhCwCdCwCS+y3wkBXbEAAbAKK1gh2Bv0WbAGELEEAbAKK1gh2Bv0WbIMAAkREjkwMQEjESERITUhETMTIQEBIQNac/7f/nQCrWbtAW3+ngGC/n8Bj/5xA0/r/mkBl/39/cn//wCC/psF/gWwACYALAAAAAcCUQSDAAD//wBv/psE9gQ6ACYA9AAAAAcCUQN7AAAAAQCCAAAHkgWwAA0AXwCwAEVYsAIvG7ECGD5ZsABFWLAMLxuxDBg+WbAARViwBi8bsQYMPlmwAEVYsAovG7EKDD5ZsgEGAhESObABL7ACELEEAbAKK1gh2Bv0WbABELEIAbAKK1gh2Bv0WTAxASERIRUhESERIREhESEBrgJJA5v9kf7U/bf+1AEsA2ICTur7OgJw/ZAFsAABAGwAAAVpBDoADQBmALAARViwAi8bsQIUPlmwAEVYsAwvG7EMFD5ZsABFWLAGLxuxBgw+WbAARViwCi8bsQoMPlmyAQYCERI5fLABLxiyQAEBXbACELEEAbAKK1gh2Bv0WbABELEIAbAKK1gh2Bv0WTAxASERIRUhESERIREhESEBjQFnAnX+rf7e/pn+3wEhAogBsur8sAGg/mAEOgAAAQCE/qoIEwWwABgAa7ISGRoREjkAsAkvsABFWLAXLxuxFxg+WbAARViwES8bsREMPlmwAEVYsBUvG7EVDD5ZsgEXERESObABL7AJELEKAbAKK1gh2Bv0WbABELEPAbAKK1gh2Bv0WbAXELETAbAKK1gh2Bv0WTAxATMgABEUBgcGIycyNjUSISMRIREhESERIQUkjwEjAT1HSZD/AX6BAv7AkP7T/bn+1ASgA0L+zf7ofuFQnt2yrwFu/aoEvftDBbAAAAEAbP7qBr4EOgAXAFmyERgZERI5ALAHL7AARViwFi8bsRYUPlmwAEVYsBAvG7EQDD5ZsABFWLAULxuxFAw+WbIBFhAREjmwAS+xDgGwCitYIdgb9FmwFhCxEgGwCitYIdgb9FkwMQEzIAQVFgIHJzY2NTQmJyMRIREhESERIQQZVQEVATkCzKp4YWqXiWL+3v6W/t8DrQKh/+mT/v05wSuAY3iCAv5LA1D8sAQ6AAIAXv/rBg4FxQAmADIAiLIEMzQREjmwBBCwJ9AAsABFWLANLxuxDRg+WbAARViwHS8bsR0YPlmwAEVYsAQvG7EEDD5ZsABFWLAALxuxAAw+WbICBB0REjmwAi+wDRCxDgGwCitYIdgb9FmwBBCxFQGwCitYIdgb9FmwABCxJgGwCitYIdgb9FmyKgIdERI5sA4QsDDQMDEFIicGIyIkAjU1NBI2MxUiBgcVFBYzNyYRNTQ2NjMyFhIVFRAHFjMBFBYXNjU1NCYjIgMGDt65nMHJ/sG0hPCWXW4B0qw8zW/De4bTdaZSXv2XWFWETFSMBQ1ETK4BOsDUqgEXnf3DmNrC6wPJAS++nP6Llv7srKj+68cQAgFzwUWG5sKmkv7yAAIAVf/mBPIETgAiAC4AiLIELzAREjmwBBCwI9AAsABFWLAMLxuxDBQ+WbAARViwGi8bsRoUPlmwAEVYsAAvG7EADD5ZsABFWLAELxuxBAw+WbICBBoREjmwAi+wDBCxDQGwCitYIdgb9FmwBBCxFAGwCitYIdgb9FmwABCxIgKwCitYIdgb9FmyJQIaERI5sA0QsCvQMDEFIicGIyIANTU0NjYzFQYGFRUUFhcmNTU0NjMyEhUVFAcWMwEUFzY1NTQmIyIGFQTyx5V7jvr+wm/DejpCjHJgv5edx4dIVP4HW2g4KSo4GjUwATj2Wofdd/EIfGRkhqoEgbaatOv++8+NyIsOAXqJYVGVkVxvZFf//wAW/psFRQWwACYAPAAAAAcCUQPKAAD//wAV/psEQAQ6ACYAXAAAAAcCUQLFAAAAAQAi/qEG1gWwAA8AXrIDEBEREjkAsA0vsABFWLACLxuxAhg+WbAARViwCC8bsQgYPlmwAEVYsA4vG7EODD5ZsAIQsQABsAorWCHYG/RZsATQsAXQsA4QsQYBsAorWCHYG/RZsArQsAvQMDEBITUhFSERIREhETMDIREhAW7+tAPB/rgCRwEtxxT+6PvEBMbq6vwrBL/7Qf2wAV8AAQAt/r8FWAQ6AA8ATQCwDS+wAEVYsAMvG7EDFD5ZsABFWLAPLxuxDww+WbADELEEAbAKK1gh2Bv0WbAA0LAPELEGAbAKK1gh2Bv0WbADELAI0LAGELAK0DAxASM1IRUjESERIREzAyERIQEJ3ALDxgFqASKiFP7z/NIDUOrq/ZkDUfyt/dgBQQD//wCJ/psF4wWwACYA4QAAAAcCUQRoAAD//wBY/psE3AQ6ACYA+QAAAAcCUQNhAAAAAQBuAAAE8AWwABcAULIEGBkREjkAsABFWLAALxuxABg+WbAARViwCi8bsQoYPlmwAEVYsAwvG7EMDD5ZsgcADBESObAHL7AE0LAHELEQAbAKK1gh2Bv0WbAT0DAxAREUFhcRMxE2NxEhESERBgcVIzUmJicRAZpda6ZnVQEs/tRGdqb5+QIFsP49cnALASL+3wkQApb6UAIoDwro5g/02AHIAAABAGgAAAQQBDoAFgBQsgYXGBESOQCwAEVYsAsvG7ELFD5ZsABFWLAVLxuxFRQ+WbAARViwAC8bsQAMPlmyDxUAERI5sA8vsQcBsAorWCHYG/RZsATQsA8QsBLQMDEhIREGBxUjNSYmJxEhERYXETMRNjcRIQQQ/t4mNqa9wwQBIQRfpi4uASIBVAgFlZkVyK4BZP6bgBsBAv70BAoB/AAAAQCGAAAFCQWwABIAR7IGExQREjkAsABFWLABLxuxARg+WbAARViwAC8bsQAMPlmwAEVYsAovG7EKDD5ZsgYBABESObAGL7EPAbAKK1gh2Bv0WTAxMxEhETY2MyAEFxEhESYmIyIHEYYBLS+tQgEVAR8E/tMBd5ORjQWw/dcKE/Ll/jMBx31uHv1sAAAC/+X/6QWwBcQAHAAkAGeyFiUmERI5sBYQsB7QALAARViwDi8bsQ4YPlmwAEVYsAAvG7EADD5ZsiEOABESObAhL7ESAbAKK1gh2Bv0WbAE0LAhELAK0LAAELEXAbAKK1gh2Bv0WbAOELEdAbAKK1gh2Bv0WTAxBSAAETUmJjUzFBc2EiQXIAARFSEVFBYzMjcXBgYDIgYHITU0JgO//sb+oJmnx3kBmgEVpQEMASr8ob2xx6cxROO9h6ACAjOIFwFSASsmGuC0pi6qARaeAf6Y/rOaFbW7PvciKwTSu5ofl58AAv+8/+wEsgROABkAIQB/shsiIxESObAbELAT0ACwAEVYsAwvG7EMFD5ZsABFWLAALxuxAAw+WbIeDAAREjmwHi+0Hx4vHgJxso8eAV2yXx4BcbEQCLAKK1gh2Bv0WbAD0LAeELAJ0LAAELEUAbAKK1gh2Bv0WbIWDAAREjmwDBCxGgGwCitYIdgb9FkwMQUiACcmJjUzFBc2JDMyEhEVIRYWMzI3FwYGAyIGByE1JiYC9uf+3A2OlLV1HwEKx9/9/VAOjGynXo5B3alVaw8BkQJkFAEP1h7Qn50uy/D+5/8AdmqAeZ9cZwN4dGwXYGkAAQCA/qMFDgWwABYAYLINFxgREjkAsAcvsABFWLARLxuxERg+WbAARViwFS8bsRUYPlmwAEVYsA8vG7EPDD5ZshQRDxESObAUL7EOAbAKK1gh2Bv0WbIAFA4REjmwBxCxCAGwCitYIdgb9FkwMQEWEhUUAgYjJzI2NRIhIxEhESERMwEhAzfi9Yv1qAF7gQL+x/z+0gEuYwFmAXQDOCL+1fa0/uyK5q2uAWr9sgWw/bcCSQAAAQCC/tIEYwQ6ABUAUrIHFhcREjkAsAYvsABFWLAQLxuxEBQ+WbAARViwFC8bsRQUPlmwAEVYsA4vG7EODD5ZsBPQsBMvst8TAV2xDAGwCitYIdgb9FmyABMMERI5MDEBFhYVFgIHJzY2NzQhIxEhESERMxMhAw2kqQLMqnhiaAH+0Gb+3wEhV/wBbQJZMuOokP7/OcErfWHz/nEEOv5pAZf//wAo/mcF/wWwACYA3QAAAAcAEAR//9T//wAW/mcE/gQ6ACYA8gAAAAcAEAN+/9QAAQCE/ksFJAWwABQAkbIKFRYREjkAsABFWLAALxuxABg+WbAARViwAy8bsQMYPlmwAEVYsAgvG7EIDj5ZsABFWLAKLxuxCg4+WbAARViwEi8bsRIMPlmyAgASERI5fLACLxi0oAKwAgJdtEACUAICcbQwAkACAl20AAIQAgJdsAgQsQ0BsAorWCHYG/RZsAIQsRABsAorWCHYG/RZMDEBESERIREUBiMiJzcWMzI1ESERIREBsAJHAS3Otk9EDi42eP25/tQFsP2VAmv6OMjVEe4MrQJo/a0FsAABAGz+SwQWBDoAFABtsgwVFhESOQCwAEVYsAAvG7EAFD5ZsABFWLADLxuxAxQ+WbAARViwCC8bsQgOPlmwAEVYsBIvG7ESDD5ZsgISAxESOXywAi8YskACAV2wCBCxDQGwCitYIdgb9FmwAhCxEAGwCitYIdgb9FkwMQERIREhEQYGIyInNxYzMjURIREhEQGNAWcBIgHHtE9BDys4eP6Z/t8EOv5OAbL7osDREeUMrwG8/mAEOgD//wCC/mcGAwWwACYALAAAAAcAEASD/9T//wBv/mcE+wQ6ACYA9AAAAAcAEAN7/9T//wCC/mcHWQWwACYAMQAAAAcAEAXZ/9T//wCC/mcGaAQ6ACYA8wAAAAcAEATo/9QAAgBL/+sFLgXEABUAHQBhsggeHxESObAIELAW0ACwAEVYsAAvG7EAGD5ZsABFWLAILxuxCAw+WbINAAgREjmwDS+wABCxEAGwCitYIdgb9FmwCBCxFgGwCitYIdgb9FmwDRCxGQGwCitYIdgb9FkwMQEgABEVFAIEJyAAETUhJiYjIgcnNjYTMjY3IRUUFgJsAUwBdqL+367+1/63A7YHzsDMtzFP7MqFqhL9eagFxP6U/r6Lv/7LrAEBZgFNm7zHP/clKvsttKEfmJ4AAQBQ/+sEZQWwABsAarILHB0REjkAsABFWLACLxuxAhg+WbAARViwCy8bsQsMPlmwAhCxAAGwCitYIdgb9FmwBNCyBQILERI5sAUvsAsQsBDQsAsQsRMBsAorWCHYG/RZsAUQsRkBsAorWCHYG/RZsAUQsBvQMDEBITUhFwEWFhUUBCMiJiY1IRQWMzI2NTQmIyM1AvD9nwO5Af6buMn+3vaR64EBLHdaaoKFkYUEvfPI/n0h68HD6mi/glJmalaJhbwAAAEAUv51BF8EOgAbAFmyCxwdERI5ALALL7AARViwAi8bsQIUPlmxAAGwCitYIdgb9FmyBAIAERI5shsLAhESObAbL7EZB7AKK1gh2Bv0WbIFGxkREjmwCxCxEwGwCitYIdgb9FkwMQEhNSEXARYWFRQEIyImJjUhFBYzMjY1NCYjIzUC7v2bA7cB/pq6yv7g85DqgAEie11shoeRiQNQ6r/+ciDqwsPpaL6CVGpuWIuFuP//ACX+SwSVBbAAJgCxWAAAJgImmBEBBwJUAWgAAAAIALLPCQFdMDH//wAW/kUDoQQ6ACYA7FEAACcCJv+J/2EBBwJUASP/+gAXALK/CAFdss8JAV2yUAkBXbJwCQFdMDEA//8AFv5LBYoFsAAmADwAAAAHAlQD4QAA//8AFf5LBIUEOgAmAFwAAAAHAlQC3AAAAAIASQAABI8FsAAMABUAUrIEFhcREjmwBBCwD9AAsABFWLABLxuxARg+WbAARViwAy8bsQMMPlmyAAEDERI5sAAvsAMQsQ0BsAorWCHYG/RZsAAQsQ4BsAorWCHYG/RZMDEBESERISImJjU0NjYzExEjIgYVFBYXA2IBLf3jpPyJh/6i8vBziIRxA8AB8PpQedyMitt6/TEB3INnaYcCAAACAHQAAAbpBbAAGQAiAFWyCCMkERI5sAgQsBrQALAARViwCS8bsQkYPlmwAEVYsAAvG7EADD5ZsggJABESObAIL7AAELEaAbAKK1gh2Bv0WbAL0LAIELEbAbAKK1gh2Bv0WTAxISImJjU0ADMzESERMzY2NycmJyEWFgcGAgclESMiBhUUFhcCm6T7iAEx+u0BLUNVZAYCDiwBJRsqAgT73P6A8XKIhHB5243YAQcB8PtCAol9Tdp0Uf9L5v7xBfEB3INnaYcCAAIAWv/nBoYGGAAfACoAf7IZKywREjmwGRCwKdAAsABFWLADLxuxAxQ+WbAARViwBi8bsQYaPlmwAEVYsBgvG7EYDD5ZsABFWLAcLxuxHAw+WbIFAxgREjmwGBCxCwGwCitYIdgb9FmyGgMYERI5sAMQsSIBsAorWCHYG/RZsBwQsScBsAorWCHYG/RZMDETEBIzMhcRIREUFjM2Njc2JyEWFgcOAiMEJwYjIgI1ASYjIgYVEDMyNyda4sWVYAEhRDVlagQEQQEbHCkCAn7kkP72XmnAw+ICnD1vZGvNeD0HAhUBBgEzdQI/+2FNVgKnkrvYZsdmqPiGBLq2ASH6AQlUrLf+1VhKAAEAQf/jBfEFsAAoAGayCykqERI5ALAARViwCS8bsQkYPlmwAEVYsCIvG7EiDD5ZsgEpCRESObABL7EAAbAKK1gh2Bv0WbAJELEHAbAKK1gh2Bv0WbIPAQAREjmwIhCxFQGwCitYIdgb9FmyGiIJERI5MDETNTM2NjU0IyE1IQQEFRQFBBcVBhYzNjY3NichFhYHDgIjBAM1NCYjy8GEevX+rAFhAQIBEv7kAREHASolXWEFBEEBJhorAgKC6JT+qRNqYgJS9gFiZ6j2AtTK7WE79lEpOAKjjbvYYspnqfiFCAFdP190AAABAC3/4gUTBDoAJgBjsiAnKBESOQCwAEVYsB0vG7EdFD5ZsABFWLAOLxuxDgw+WbECAbAKK1gh2Bv0WbIHDh0REjmyFycdERI5sBcvsRQBsAorWCHYG/RZsB0QsRsBsAorWCHYG/RZsiQXFBESOTAxAQYzNjY3NichFhYHBgYjBiYnNTQjIyczNjU0IyMnIRYXFhUUBxYXAxYCRkZNAwRAARotGAEE6by1tgpz/QK+lqT/BgEZzHNzpL0FAQJfAod3maaGgDnM8gNxg0ho3AJtf+oDU1SZmkotqwAAAQBB/pgEeAWwACEAYrIDIiMREjkAsBcvsABFWLAJLxuxCRg+WbAARViwGy8bsRsMPlmyASIJERI5sAEvsQABsAorWCHYG/RZsAkQsQcBsAorWCHYG/RZsg8AARESObAbELESAbAKK1gh2Bv0WTAxEyczNjU0JiMhJyEWBBUUBxYRFTMHBgYHJzc2NyMmJzU0I4IB/uh/cf7QBgFF8wEO6fPnAQFuVpcsNQbTPATpAkHpBcJnbuoE48neZ0f+7WbIb+JKT1JnYDG9aukAAQBt/osEVAQ6ACEAYrIEIiMREjkAsBcvsABFWLAKLxuxChQ+WbAARViwGy8bsRsMPlmyASIKERI5sAEvsQABsAorWCHYG/RZsAoQsQgBsAorWCHYG/RZshAAARESObAbELESAbAKK1gh2Bv0WTAxEyczMjY1NCYnISchMgQVFAcWFzMHBgYHJzc2NyMmJzUmJ6QB/FhZXVH+0wgBLtgBAJ+oBNQBAW5Wlyo6BOQbAQOuAYDKRDk8TgHou6GdVkC9yG/iSk9Mb2sYgVGTAwABAED/6weIBbAAIgBlsgAjJBESOQCwAEVYsA0vG7ENGD5ZsABFWLAGLxuxBgw+WbAARViwHy8bsR8MPlmwDRCxAAGwCitYIdgb9FmwBhCxCAGwCitYIdgb9FmwHxCxEgGwCitYIdgb9FmyFx8NERI5MDEBIQMCAgYHIzU3NjYTEyERFBYzMjY3NichFhYHDgIjIiY1A/D+mRkOZb+mWDJwYA4aA7I/NVtqBARBAScaKwICf+WQzdMEuv4E/v7+1I0D8QUP5AEaAq37zUdXn5O72GLKZ6f4h8nGAAEAP//rBnIEOgAhAGWyICIjERI5ALAARViwDC8bsQwUPlmwAEVYsB4vG7EeDD5ZsABFWLAGLxuxBgw+WbAMELEAAbAKK1gh2Bv0WbAGELEHAbAKK1gh2Bv0WbAeELERAbAKK1gh2Bv0WbIWHgwREjkwMQEjAwIGByMnNzY2NxMhERQWMzY2NzYnIRcWBw4CIyImJwMA2xIRsK5iAyROSAkUAwtKPk5UAgRAARoXMAMCcs+D0tYBA03+tf719APrAwaszwHL/T9JWgGSf7XIU7F5m+R+yMAAAAEAgf/jB4oFsAAcAH6yEx0eERI5ALAARViwAC8bsQAYPlmwAEVYsBgvG7EYGD5ZsABFWLAWLxuxFgw+WbAARViwES8bsREMPlmxBAGwCitYIdgb9FmyCREAERI5shsAFhESOXywGy8YtKAbsBsCXbQAGxAbAl20MBtAGwJdsRQBsAorWCHYG/RZMDEBERQWMzY2NzYnIRYWBw4CIwQDNSERIREhESERBR4/M2FmBARBASYbKwICgOWR/ngX/b3+0wEtAkMFsPvNSlQCo4272GLKZ6f4hwgBmNj9rQWw/ZUCawABAF3/5wZjBDoAHQB/shweHxESOQCwAEVYsAQvG7EEFD5ZsABFWLAILxuxCBQ+WbAARViwAi8bsQIMPlmwAEVYsBovG7EaDD5ZsgcIAhESOXywBy8YskAHAV20kAegBwJdtAAHEAcCXbQwB0AHAnGxAAGwCitYIdgb9FmwGhCxDQGwCitYIdgb9FkwMQEhESERIREhESERFBYzNjY3NichFxYHDgIjBiYnAvH+jv7eASIBcgEhSj5OVAMEQAEZFzADAnLPg8jVDAGq/lYEOv5bAaX9P0tYApF/r85TsXmb5H4Ew80AAAEARv/rBNUFxQAgAEKyACEiERI5ALAARViwCS8bsQkYPlmwAEVYsAAvG7EADD5ZsAkQsQ4BsAorWCHYG/RZsAAQsRUBsAorWCHYG/RZMDEFIiQCJxE0EiQzMhcHJiMiBhURFBYzNjY3NichFxYHBgQCvLT+4KEBnwEitd+IPoihkbi3knF3AwM1ASUnFAIE/tsVnQEZrwELrwEcn1nhRNGo/v+j0wJzZpLGqFhY1vkAAQBG/+sEBgROAB4ARrITHyAREjkAsABFWLATLxuxExQ+WbAARViwCy8bsQsMPlmxAAGwCitYIdgb9FmyBQsTERI5sBMQsRgBsAorWCHYG/RZMDElNjY3NCchFgcGBiMiADU1NDY2MzIXByYjIgYVFRQWAmNEOgITARocAQTgvvD+04LumbpgLmOJaX6I1gI3O3BfhEuotwEw+R6Y+IxC5DqrjSKHqwAAAQAf/+cFZAWwABkASLIFGhsREjkAsABFWLACLxuxAhg+WbAARViwFi8bsRYMPlmwAhCxAAGwCitYIdgb9FmwBNCwBdCwFhCxCQGwCitYIdgb9FkwMQEhNSEVIREUFjM2Njc2JyEWFgcOAiMGJicBzf5SBID+Wj80YWYDBEABJRwpAgJ/5ZDF0AoEuvb2/MFIVAKjjbfcZsdmp/mGBMjMAAEAQv/nBNsEOgAYAE+yFhkaERI5ALAARViwAi8bsQIUPlmwAEVYsBUvG7EVDD5ZsAIQsQABsAorWCHYG/RZsATQsAXQsBUQsQkBsAorWCHYG/RZsg4VAhESOTAxASE1IRUhERQWMzY2NzYnIRYWBwYGIwYmJwFq/tgDi/6+Sj1OVQMEQAEaKxoBBPvJydMMA1Dq6v4nSVgCbmOMlXN6NMzyBMTMAAABAGr/6wT5BcUAKQB4sicqKxESOQCwAEVYsBcvG7EXGD5ZsABFWLALLxuxCww+WbEDAbAKK1gh2Bv0WbIlFwsREjl8sCUvGLQAJRAlAl20MCVAJQJdsoAlAV20oCWwJQJdsSYBsAorWCHYG/RZshEmJRESObAXELEfAbAKK1gh2Bv0WTAxARQWMzI2NSEUBgQjICQ1NDY3JiY1NCQhMhYWFSE0JiMiBhUUITMVIyIGAZanhXGaASyP/vae/u/+uYiBcoEBNQENmfqQ/tOLa4CVAQjEx4uRAZxXaWhQf8Jo6MV/qyowpmPG2mi/eExgYVLD62P//wAo/ksGPwWwACYA3QAAAAcCVASWAAD//wAW/ksFPgQ6ACYA8gAAAAcCVAOVAAAAAgBbBG8CywXXAAUADgAbALALL7AH0LAHL7AB0LABL7ALELAF0LAFLzAxARMzFQMjATMVFhcHJiY1AYlv0+Zc/tKtAUxTSl0EmwE8Ff7BAVRefDhWI4ld//8AbgH7AqEC5AAGABEAAP//AG4B+wKhAuQABgARAAD//wCYAlQEpANAAEYBr+gATM1AAP//AG0CVAXSA0AARgGvggBmZkAAAAIAAf5gA5AAAAADAAcAJwCwAEVYsAYvG7EGDD5ZsAXQsAUvsALQsAIvsgACAV2wAdCwAS8wMQEhNSE1ITUhA5D8cQOP/HEDj/5gmW6ZAAEAaAQYAaYGIgAIACGyCAkKERI5ALAARViwAC8bsQAaPlmyBQkAERI5sAUvMDEBFwYHFSM1NDYBHohWA+VpBiJPiIynll7VAAEAOgPxAXkGAAAIACGyCAkKERI5ALAARViwBC8bsQQaPlmyAAkEERI5sAAvMDETJzY3NTMVFAbCiFYD5mQD8U+HkKmbWtIAAAEAQv7PAYEA5QAIABOyCAkKERI5ALAEL7AA0LAALzAxEyc2NzUzBwYGyohOA+4BAWP+z09+lLWmWc4AAAEARwPxAYYGAAAJAAwAsAkvsAXQsAUvMDEBFRYWFwcmJjU1AS0BJTOIUmUGAKNHgVVPR9JcmgD//wBwBBgDBQYiACYBhAgAAAcBhAFfAAD//wBIA/EC4gYAACYBhQ4AAAcBhQFpAAAAAgBC/rsC2QEHAAgAEQAfsgoSExESObAKELAF3ACwBC+wDdCwCdCwCS+wANAwMRMnNjc1MwcGBgUnNjc1MwcGBtGPTgPuAQFeAQCPVgPuAQJl/rtPhp/Yx2HbSU+UktfLYNoAAAEAOQAABBcFsAALAEwAsABFWLAILxuxCBg+WbAARViwBi8bsQYUPlmwAEVYsAovG7EKFD5ZsABFWLACLxuxAgw+WbAKELEAAbAKK1gh2Bv0WbAE0LAF0DAxASERIREhNSERIREhBBf+n/7f/qQBXAEhAWEDSfy3A0nxAXb+igAAAQBi/mAEPwWwABMAfgCwAEVYsAwvG7EMGD5ZsABFWLAKLxuxChQ+WbAARViwDi8bsQ4UPlmwAEVYsAIvG7ECDj5ZsABFWLAALxuxAAw+WbAARViwBC8bsQQMPlmxBgGwCitYIdgb9FmwDhCxCAGwCitYIdgb9FmwCdCwENCwEdCwBhCwEtCwE9AwMSEhESERITUhESE1IREhESEVIREhBD/+n/7e/qYBWv6mAVoBIgFh/p8BYf5gAaDpAmfqAXb+iur9mQAAAQCHAfQCYgPkAA0AF7IKDg8REjkAsAMvsAqwCitY2BvcWTAxEzQ2MzIWFxUUBiMiJjWHhGhsgQKDammFAv5ofnxlK2d9fGv//wCF//UDpQEpACYAEgcAAAcAEgHgAAD//wCF//UFdQEpACYAEgcAACcAEgHgAAAABwASA7AAAAABAGUB3AGpAwYACwAZsgMMDRESOQCwAy+xCQawCitYIdgb9FkwMRM0NjMyFhUUBiMiJmVXS0tXV0tLVwJxQlNTQkJTUwAABgBX/+wHbAXEABUAIwAnADQAQQBPAK6yAlBRERI5sAIQsBvQsAIQsCbQsAIQsCjQsAIQsDXQsAIQsEfQALAkL7AmL7AARViwGS8bsRkYPlmwAEVYsBIvG7ESDD5ZsAPQsAMvsAfQsAcvsBIQsA7QsA4vsBkQsCDQsCAvsBIQsSsCsAorWCHYG/RZsAMQsTECsAorWCHYG/RZsCsQsDjQsDEQsD7QsCAQsUUCsAorWCHYG/RZsBkQsUwCsAorWCHYG/RZMDEBNDYzMhc2MzIWFRUUBiMiJwYjIiY1ATQ2MzIWFRUUBiMiJjUBJwEXAxQWMzI1NTQmIyIGFQUUFjMyNTU0JiMiBhUBFBYzMjY1NTQmIyIGFQMssIyTUVGSirOtjpRRUZGOsP0rqIWNsLCLhaoBf40Cx42wSDV6RDg3RAHHRjd6RDg3RPtVQzo4QkQ4OUIBZYGraWmnjEeAq2lpq4QDfIOqqYpGgqmpifwbTARyTPw4OUyHTDxJST9LNk+HTDxJST8C6TtKSj5JPEpKQAAAAQBsAH0CPgOcAAYAEACwBS+yAgcFERI5sAIvMDEBEyMBNQEzAU7wuv7oARi6Agz+cQGGEwGGAAABAFAAfAIjA5sABgAQALAAL7IDBwAREjmwAy8wMQEBFQEjEwMBCwEY/ui78PADm/56E/56AY8BkAAAAQAeAG0DcgUrAAMACQCwAC+wAi8wMTcnARerjQLHjW1MBHJMAP//ADUCmwLABbABBwIgAAACmwATALAARViwCS8bsQkYPlmwDdAwMQAAAQBXAo0DBQW6AA8AVLIKEBEREjkAsABFWLAALxuxABg+WbAARViwAy8bsQMYPlmwAEVYsA0vG7ENED5ZsABFWLAGLxuxBhA+WbIBDQMREjmwAxCxCgewCitYIdgb9FkwMRMXNjMgExEjESYjIgcRIxH/IEuTAQMF1AR8YCXVBa57h/7Y/fsByK5P/dkDIQAAAQBmAAAEiQXDACcAoLIfKCkREjkAsABFWLAXLxuxFxg+WbAARViwBi8bsQYMPlmyJxcGERI5sCcvsQACsAorWCHYG/RZsAYQsQQBsAorWCHYG/RZsAjQsAnQsAAQsAzQsCcQsA7QsCcQsBPQsBMvtg8THxMvEwNdsp8TAV2xEAKwCitYIdgb9FmwFxCxHgGwCitYIdgb9FmyGxMeERI5sBMQsCLQsBAQsCTQMDEBIRcUByEVITUzNjUnIzUzJyM1Myc0NjMyFhUhNCYjIgYVFyEVIRchA0n+8AE+Ao373VxIAqKdBJmUBPfP1PL+4VdRQ1YFASL+5QQBFwHUH3tJ8fESoTCfbp+PyurhwFVaYmCPn24ABAAlAAAGXQWwABsAHwAjACYAv7IYJygREjmwGBCwH9CwGBCwIdCwGBCwJtAAsABFWLAWLxuxFhg+WbAARViwGi8bsRoYPlmwAEVYsAgvG7EIDD5ZsABFWLAMLxuxDAw+WbIFFggREjmwBS+wAdCwAS+yDwEBXbECArAKK1gh2Bv0WbAFELEGArAKK1gh2Bv0WbAK0LAGELAO0LAFELAQ0LACELAS0LABELAU0LABELAY0LAFELAc0LACELAe0LAFELAg0LACELAi0LAGELAl0DAxATMVIxUzFSMRIQEhESERIzUzNSM1MxEhASERIQEzNSMFMycjATUjBZDNzc3N/tP+zP7t/tPKysrKAS0BHQErASz+bWfJ/oGyY08CSAYD26CioP4HAfn+BwH5oKKgAdX+KwHV/OmioqL+tQkAAgCN/+wGcQWwAB4AJwCmsiIoKRESObAiELAX0ACwAEVYsBUvG7EVGD5ZsABFWLAZLxuxGRQ+WbAARViwHS8bsR0UPlmwAEVYsAovG7EKDD5ZsABFWLATLxuxEww+WbAdELEACbAKK1gh2Bv0WbAKELEFAbAKK1gh2Bv0WbAAELAN0LAO0LIgExUREjmwIC+xEQGwCitYIdgb9FmwHRCwHNCwHC+wFRCxJgGwCitYIdgb9FkwMQEjERQWMzI3FQYjIAMRIwYEByMRIREhMgQXMxEhETMBMzI2NTQmIyMGZrgtQjEjVVn+0AZlJ/72zW3+0AGY2QEQH2ABIbj7V2hsdHVpagNm/eQ7NQfbGgEzAkeqtwH9/AWww7MBCv72/sV1a2du//8Agv/sCGIFsAAmADYAAAAHAFcEkAAAAAUAJQAABlAFsAAfACMAJwAqAC0A4LIOLi8REjmwDhCwItCwDhCwJ9CwDhCwKdCwDhCwLdAAsABFWLACLxuxAhg+WbAARViwDC8bsQwMPlmwAEVYsBAvG7EQDD5ZsggCDBESObAIL7AE0LAEL7AA0LAEELEGArAKK1gh2Bv0WbAIELEKArAKK1gh2Bv0WbIOAgwREjmwDi+wChCwEtCwCBCwFNCwBhCwFtCwBBCwGNCwAhCwGtCwBBCwHNCwAhCwHtCwCBCwINCwBhCwItCwCBCwJNCwBhCwJtCyKAIMERI5sAoQsCnQsisCDBESObAKELAs0DAxATMTIQMzFSMHMxUjAyEDIwMhAyM1MycjNTMDIRMzEyEBMzcjBTM3IwE3IwU3IwPkwyoBKzqOrhnH5on+0G4abP7Pit2+GaWGOgErKsUrAQP+NnITmAIzcBKV/iwiRAJCIUMEhgEq/taghKD9PgLC/T4CwqCEoAEq/tYBKv2yhISE/evx6ekAAgBvAAAGgwQ6AA0AGwBmALAARViwFi8bsRYUPlmwAEVYsAAvG7EAFD5ZsABFWLALLxuxCww+WbAARViwDi8bsQ4MPlmxEQGwCitYIdgb9FmyBREAERI5sAUvsAAQsQoBsAorWCHYG/RZsg8KCxESObAPLzAxATIWFxEhETQmJyERIREBESERITI2NxEhEQYEIQNaxrID/t5JZv6M/t8BrQEhAWxqTAIBIgH+wP76BDq30v67ATZaUwH8sAQ6+8YCz/4aTlcCrP1dt+AAAQBZ/+0ERAXDACIAk7IcIyQREjkAsABFWLAWLxuxFhg+WbAARViwCS8bsQkMPlmyIhYJERI5sCIvsQAHsAorWCHYG/RZsAkQsQQBsAorWCHYG/RZsAAQsAzQsCIQsA7QsCIQsBPQsBMvtg8THxMvEwNdsp8TAV2xEAewCitYIdgb9FmwFhCxGwGwCitYIdgb9FmwExCwHdCwEBCwH9AwMQEhFhYzMjcXBiMgACcjNTM1IzUzNgAhMhcHJiMgAyEVIRUhA37+sQWTm2lVJHyE/vn+zQipqamrEQE9AQZpgyReW/7lGwFN/rEBTwIEk5Qf8h0BG/yYfJj8ARcf8yD+35h8AAAEACUAAAXYBbAAGgAfACQAKQEfsgwqKxESObAMELAc0LAMELAj0LAMELAo0ACwAEVYsAsvG7ELGD5ZsABFWLABLxuxAQw+WbALELEkAbAKK1gh2Bv0WbAJ0LAJL0AdAAkQCSAJMAlACVAJYAlwCYAJkAmgCbAJwAnQCQ5dsAXQsAUvQA2QBaAFsAXABdAF4AUGXbQwBUAFAl2ycAUBcbEEArAKK1gh2Bv0WbAn0LAnL0AhACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CcQXUAXACcQJyAnMCdAJ1AnYCdwJ4AnkCegJwtxsQABsAorWCHYG/RZsAkQsQgCsAorWCHYG/RZsAkQsCDQsA/QsAgQsB3QsBLQsAUQsB7QsB4vsBTQsAQQsCbQsBfQMDEBESERIzUzNSM1MxEhMgQXMxUjFwczFSMGBCMTJyEVISUhJichASEVITIB+/7TqampqQI5uQEKO9OvAQGv0jf++8PzAv4DAf7+AgGoPlj+7gGZ/mcBDFYCAf3/AxGgPqABIZiJoCEdoIGPAd0RPt4tAf5UHQAAAQAoAAAEEAWwABkAebIRGhsREjkAsABFWLAYLxuxGBg+WbAARViwDC8bsQwMPlmwGBCxAQiwCitYIdgb9FmwGBCxFwGwCitYIdgb9FmwE9CwEy+wA9CwExCxEgiwCitYIdgb9FmwBtCwEhCwDtCwDi+xCQmwCitYIdgb9FmyDQkOERI5MDEBIxYXMwcjBgYHARUhASczMjchNyEmJyE3IQPc0S4OyTWVF8C0AbX+tf4cAe25L/4TNAGzMab+8DsDrQTpSF/GlbAj/foOAjewlcZ5AvMAAAEAJf/sBHQFsAAeAJUAsABFWLARLxuxERg+WbAARViwBS8bsQUMPlmyExEFERI5sBMvsBfQsBcvsgAXAV2yYBcBXbEYCbAKK1gh2Bv0WbAZ0LAI0LAJ0LAXELAW0LAL0LAK0LATELEUCbAKK1gh2Bv0WbAV0LAM0LAN0LATELAS0LAP0LAO0LAFELEaAbAKK1gh2Bv0WbIeBREREjmwHi8wMQEVFAIEIyInEQc1NzUHNTcRIRU3FQcVNxUHETY2NzUEdJr+47eQlru7u7sBK8TExMSZoQEC+0fU/rywFAJxPdU9eD3VPQEdu0HVQXhB1EH+DgLo5EsAAQBEAAAFMQQ6ABgAYLILGRoREjkAsABFWLAYLxuxGBQ+WbAARViwEC8bsRAMPlmwAEVYsAUvG7EFDD5ZsABFWLAKLxuxCgw+WbIWChgREjmwFi+wANCwAC+wFhCxDAGwCitYIdgb9FmwCdAwMQEWABMVITUmJicRIREGBhUVITU0EjY3NSEDS98BBQL+3wFoXP7fXGn+33XdlAEhA2Ey/pD+8bCvqdsw/Z0CZDDeramotQEkwCHYAAIAMwAABVkFsAAXAB8Ag7IZICEREjmwGRCwFNAAsABFWLAMLxuxDBg+WbAARViwAy8bsQMMPlmwBtCwBi+xBQGwCitYIdgb9FmwAdCwBhCwCtCwCi+yDwoBXbRfCm8KAl2y3woBXbEJAbAKK1gh2Bv0WbAV0LAGELAW0LAKELAY0LAMELEfAbAKK1gh2Bv0WTAxJSEVITUjNTM1IzUzESEyFhYVFAQhIRUhASEyNTQmJyEDaP7C/tTLy8vLAjak+In+2/77/vsBPv7CAQP8gHH+8sLCwvNM8wK8dtuM2PpMAT/daYEBAAAEAGT/7AWQBcUAGgAoADQAOACKshs5OhESObAbELAA0LAbELAp0LAbELA30ACwNS+wNy+wAEVYsAkvG7EJGD5ZsABFWLAlLxuxJQw+WbAJELAD0LADL7AJELEQArAKK1gh2Bv0WbADELEXArAKK1gh2Bv0WbAlELAe0LAeL7AlELEsArAKK1gh2Bv0WbAeELEyArAKK1gh2Bv0WTAxARQGIyImNTU0NiAWFSM0JiMiBhUVFBYzMjY1ATQ2MzIWFRUUBiMiJjUXFBYzMjU1NCYiBhUFJwEXArSfh4akogEMosA7LS84NzIsOgEjsIyOr6yPkK7ASDZ6RHBE/fCNAseNBClzlqaLR4anl3UsOUk/SzlMOCv9PIelo49IhqWmiQQ3TodMPElJP/VMBHJMAAIAKv/rA60F2gAYACEAXbIBIiMREjmwARCwGdAAsA0vsABFWLAALxuxAAw+WbIHDQAREjmwBy+xBgiwCitYIdgb9FmwFNCwABCxGAGwCitYIdgb9FmwBxCwGdCwDRCxHwGwCitYIdgb9FkwMQUiJCc1BiM1MjcRNjYzMhYVFRQCBxUUFjMDNjU1NCYjIhUC6Pn+9gFZYWFZBMWtmLvguWVv1JUqHk0V6doRD7sRAabO6r+fJ5r+yGE3fnICFYnHHzA4rwAEAIAAAAe2BcAAAwAQAB4AKACksh8pKhESObAfELAB3LAfELAE3LAfELAR3ACwAEVYsCcvG7EnGD5ZsABFWLAlLxuxJRg+WbAARViwBy8bsQcYPlmwAEVYsCIvG7EiDD5ZsABFWLAgLxuxIAw+WbAHELAN0LANL7AC0LACL7EBArAKK1gh2Bv0WbANELEUArAKK1gh2Bv0WbAHELEbArAKK1gh2Bv0WbIhJSAREjmyJiAlERI5MDEBITUhATQ2IBYVFRQGIyImNRcUFjMyNjU1NCYjIgYVASEBESERIQERIQeD/asCVf1+wAE0wb2cnb+vXVBPW15OTV7+1/7C/lr+3QE+AacBIgGhkwIkoMjHpz6eyMmjBmNxcmc/YnJyZvusA7P8TQWw/EsDtQACAHQDkgR4BbAADAAUAG4AsABFWLAGLxuxBhg+WbAARViwCS8bsQkYPlmwAEVYsBMvG7ETGD5ZsgEVBhESObABL7IACQEREjmyAwEGERI5sATQsggBCRESObABELAL0LAGELANsAorWNgb3FmwARCwD9CwDRCwEdCwEtAwMQEDIwMRIxEzExMzESMBIxEjESM1IQP4b0hvgJ51fpWA/hOBjogBlwTy/qABYf6fAh7+kAFw/eIBsv5RAa9sAAIAlP/sBI8ETgAVABwAZbICHR4REjmwAhCwFtwAsABFWLAKLxuxChQ+WbAARViwAi8bsQIMPlmyGgoCERI5sBovsQ8FsAorWCHYG/RZsAIQsRMFsAorWCHYG/RZshUKAhESObAKELEWBbAKK1gh2Bv0WTAxJQYjIiYCNTQSNjMyFhYXFSERFjMyNwEiBxEhESYEEre7kfSHkPiEheOEA/0Ad5rErP6Ql3oCHHNecp0BAZOPAQOfi/OQPv64bnoDKnr+6wEecQD//wBh//UF3wWYACcBxv/aAoYAJwGUARIAAAEHAiQDLQAAABAAsABFWLAFLxuxBRg+WTAx//8ASP/1BnsFtAAnAh8AGAKUACcBlAGrAAABBwIkA8kAAAAdALAARViwDS8bsQ0YPlmwAEVYsBcvG7EXED5ZMDEA//8AV//1BmgFrAAnAiEAEgKXACcBlAGXAAABBwIkA7YAAAAdALAARViwAS8bsQEYPlmwAEVYsA0vG7ENED5ZMDEA//8AW//1BjIFowAnAiMAKAKOACcBlAFIAAABBwIkA4AAAAAQALAARViwBS8bsQUYPlkwMQACAFn/6wRVBgEAGgAnAFeyFCgpERI5sBQQsCHQALAML7AARViwFC8bsRQMPlmyAAwUERI5sAAvsAwQsQUBsAorWCHYG/RZsAAQsRsBsAorWCHYG/RZsBQQsSEBsAorWCHYG/RZMDEBMhcmJiMiBwcnNzYzIAATFRQCBiMiADU1NAAXIgYVFBYzMjY1NSYmAjWlcx+xfmhJQi06c4sBDwEsA33pmej+6wEB/mtycGtpdR9yBAxztMwaGc8aMv5V/nM+xf7OqQEh+g3kARXplKCJkq6tbkBGAAABAKT/AwTvBbAABwAoALAEL7AARViwBi8bsQYYPlmwBBCwAdCwBhCxAgGwCitYIdgb9FkwMQUhESERIREhBO/+3v35/t4ES/0Fyfo3Bq0AAAEAOf7zBNQFsAAMADcAsAMvsABFWLAILxuxCBg+WbADELECAbAKK1gh2Bv0WbAF0LAIELEKAbAKK1gh2Bv0WbAH0DAxAQEhFSE1AQE1IRUhAQOj/iMDDvtlAjr9xgR4/RgB2gJG/ZbplwLNAsKX6v2hAAEAkwJUA/IDQAADABIAsAIvsQEBsAorWCHYG/RZMDEBITUhA/L8oQNfAlTsAAABADcAAARvBbAACAA9sgMJChESOQCwBy+wAEVYsAEvG7EBGD5ZsABFWLADLxuxAww+WbIAAQMREjmwBxCxBgGwCitYIdgb9FkwMQEBMwEjAyM1IQJGAULn/lr2uuIBhAEmBIr6UAIL7AAAAwBe/+wH/QROABgAKAA3AG6yBjg5ERI5sAYQsCDQsAYQsDDQALAARViwBC8bsQQMPlmwAEVYsAgvG7EIDD5ZsBDQsBAvsBbQsBYvsgYWBBESObITFgQREjmxHAGwCitYIdgb9FmwBBCxJgGwCitYIdgb9FmwLNCwHBCwNdAwMQEUBgYjIAMCISIANTU0NjYzMhYXNjYzMgAFNCYjIgcGBxUeAzMyNiUUFjMyNzY3NS4CIyIGB/2D65X+36ys/t/l/uOA65WN7VVW647hASD+5ohui2EyEQU8U2E4cob6lIVzkmUtCBJfeURuiAISnf2MATj+yAE3+Aua/4+XmJqV/sryjKuVTkgdIYNgNayKi6uzUTUdTJRLqgAAAf+l/ksCvQYVABUAP7ICFhcREjkAsABFWLAOLxuxDho+WbAARViwAy8bsQMOPlmxCAGwCitYIdgb9FmwDhCxEwGwCitYIdgb9FkwMQUUBiMiJzcWMzI3ETQ2MzIXByYjIhUBsci0TEQQMCWBBNC/P2AYKjeTL8DGEuQMkATTuMUV3gqZAAACAGUA8QQgA/4AFQAqAHyyECssERI5sBAQsBvQALADL7AI0LAIL7ADELAK0LAIELENCbAKK1gh2Bv0WbADELESCbAKK1gh2Bv0WbANELAV0LADELAY0LAYL7Ad0LAdL7AYELAf0LAdELEiCbAKK1gh2Bv0WbAYELEnCbAKK1gh2Bv0WbAiELAq0DAxEzY2MzYXFxYzMjcVBiMiJycmByIGBxU2MzYXFxYzMjcVBiMiJycmByIGB2UwhEJYVYpSWH9lZndYUopVWEWLLWaIWlaMT1aHZWZ+WFKKVVhChDADkjI4AiZEJn7taiZEJgJGOLdqAidFJH7taiZEJgJCPAAAAQCIAGEEBgSrABMAOQCwEy+xAAGwCitYIdgb9FmwBNCwExCwB9CwExCwD9CwDy+xEAGwCitYIdgb9FmwCNCwDxCwC9AwMQEhByc3IzUhNyE1ITcXBzMVIQchBAb91nR3U7wBO2r+WwIkc3dRwf7AawGrATnYPprsxezVP5bsxf//ADYAKAOcBJgAZwAgAAAAt0AAOZoBBwGv/6r91AANALIACgFdsnAKAV0wMQD//wB4ACgD3wSdAGcAIgAAAL1AADmaAQcBr//m/dQADQCyAAkBXbJwCQFdMDEAAAIAHwAAA/cFsAAFAAkAOLIICgsREjmwCBCwAdAAsABFWLAALxuxABg+WbAARViwAy8bsQMMPlmyBgADERI5sggAAxESOTAxATMBASMBAQMTEwGP9wFx/pD3/o8B68zOywWw/Sf9KQLXAan+V/5YAagA//8AigCvAdEFFgAnABIADAC6AAcAEgAMA+0AAgBaAo0CNwQ5AAMABwAsALAARViwAi8bsQIUPlmwAEVYsAYvG7EGFD5ZsAIQsADQsAAvsATQsAXQMDETIxEzASMRM/2jowE6o6MCjQGs/lQBrAAAAQA0/2sBVAETAAgAHgCwCS+wBNCwBC+yoAQBXbQwBEAEAl2wANCwAC8wMRcnNjc1MxUUBsOPSQPUU5VPc39nR13GAP//AB0AAAU6BhUAJgBKAAAABwBKAlwAAAACABQAAAReBhUAFQAZAIWyCBobERI5sAgQsBfQALAARViwCC8bsQgaPlmwAEVYsAMvG7EDFD5ZsABFWLARLxuxERQ+WbAARViwGC8bsRgUPlmwAEVYsAAvG7EADD5ZsABFWLAWLxuxFgw+WbADELEBCbAKK1gh2Bv0WbAIELEOAbAKK1gh2Bv0WbABELAT0LAU0DAxMxEjNTM1NjYzMhcHJiYjIhUVMxUjESEhESG1oaEC9+GHwSpibD7K1dUCh/7eASIDZtQyzN077x0RsyzU/JoEOgAAAQAdAAAEZgYVABYAXgCwAEVYsBIvG7ESGj5ZsABFWLAGLxuxBhQ+WbAARViwCS8bsQkMPlmwAEVYsBYvG7EWDD5ZsBIQsQIBsAorWCHYG/RZsAYQsQcJsAorWCHYG/RZsAvQsAYQsA7QMDEBJiMiFRUzFSMRIREjNTM1NjYzMgURIQNEVkrE19f+3qGhAujUlwFT/t4FIAqnSdT8mgNm1FS8yyD6CwAAAgAdAAAG7QYVACYAKgDBshMrLBESObATELAo0ACwAEVYsBUvG7EVGj5ZsABFWLAILxuxCBo+WbAARViwAy8bsQMUPlmwAEVYsBAvG7EQFD5ZsABFWLAeLxuxHhQ+WbAARViwKS8bsSkUPlmwAEVYsAAvG7EADD5ZsABFWLAiLxuxIgw+WbAARViwJy8bsScMPlmwAxCxAQmwCitYIdgb9FmwCBCxDQGwCitYIdgb9FmwFRCxGwGwCitYIdgb9FmwARCwINCwIdCwJNCwJdAwMTMRIzUzNTQ2MzIXByYjIhUVITU2NjMyFwcmJiMiFRUzFSMRIREhESEhESG+oaHRvDxXAyQ0owFkAvfhhsMqYm0+ytXV/t7+nAUN/t4BIgNm1Fy2yRTgCZlXMszdO+8dEbMs1PyaA2b8mgQ6AAEAHQAABu0GFQAnAJ6yEygpERI5ALAARViwCC8bsQgaPlmwAEVYsAMvG7EDFD5ZsABFWLAQLxuxEBQ+WbAARViwHy8bsR8UPlmwAEVYsAAvG7EADD5ZsABFWLAYLxuxGAw+WbAARViwIy8bsSMMPlmwAxCxAQmwCitYIdgb9FmwCBCxDQGwCitYIdgb9FmwCBCwFdCwDRCwHNCwARCwIdCwItCwJdCwJtAwMTMRIzUzNTQ2MzIXByYjIhUVITU2NjMyBREhESYjIhUVMxUjESERIRG+oaHRvDxXAyQ0owFkAevTkAFa/t5WS8TX1/7e/pwDZtRctskU4AmZV1G/yyD6CwUgCqdJ1PyaA2b8mgAAAQAd/+wFAQYVACMAl7IOJCUREjkAsABFWLAfLxuxHxo+WbAARViwDy8bsQ8UPlmwAEVYsBovG7EaFD5ZsABFWLAiLxuxIhQ+WbAARViwCi8bsQoMPlmwAEVYsBYvG7EWDD5ZsCIQsQAJsAorWCHYG/RZsAoQsQUBsAorWCHYG/RZsAAQsA3QsA7QsB8QsRMBsAorWCHYG/RZsA4QsBjQsBnQMDEBIxEUFjMyNxUGIyADESM1MzUmIyIVESERIzUzNTY2MzIFETME9rguQTEjVVn+0Aafnz9rlP7foaECz73YARq4A2b95Dw0B9saATMCR9TWG5n7bgNm1GSyxWv+kAAAAQA4/+wGpwYYAEsA5bJFTE0REjkAsABFWLBGLxuxRho+WbAARViwPy8bsT8UPlmwAEVYsA8vG7EPFD5ZsABFWLBKLxuxShQ+WbAARViwCi8bsQoMPlmwAEVYsCwvG7EsDD5ZsEoQsQAJsAorWCHYG/RZsAoQsQUBsAorWCHYG/RZsAAQsA3QsA7QsEYQsRQJsAorWCHYG/RZsh0/LBESObQLHRsdAl2wPxCxIAmwCitYIdgb9FmyOiw/ERI5sDoQsSUJsAorWCHYG/RZsjEsPxESObQEMRQxAl2wLBCxNAmwCitYIdgb9FmyQT8gERI5MDEBIxEUFjMyNxUGIyARESM1MzU0JiMiBhUUHgIVITQmIyIGFRQWFhcWFRQGIyImJjUhFhYzMjY1NCYnJDU0NjMyFyY1NDYzMhYVFTMGnLk3ODIjVVr+ypubW1BJUhofGv7fUFVJUFvYSuX+yYjTeAESBGpZU1VpdP5+78FTTi3kvNnsuQNm/exFMwfbGgFpAhHUWVRdUUY7YmRxSj5RQjMwOysbVM+Ut2GpYk1SPzM1PRhR95DBE2dOhqLJwlMAFgBX/nIH6gWuAA0AGgAoADcAPQBDAEkATwBWAFoAXgBiAGYAagBuAHYAegB+AIIAhgCKAI4BQQCwPS+wAEVYsEYvG7FGGD5Zsn5JAyuyensDK7KCdwMrsn86AyuyCj1GERI5sAovsAPQsAMvsA7QsA4vsAoQsA/QsA8vslAODxESObBQL7FvBLAKK1gh2Bv0WbIVUG8REjmwChCxHgSwCitYIdgb9FmwAxCxJQSwCitYIdgb9FmwDxCwKdCwKS+wDhCwLtCwLi+xNASwCitYIdgb9FmwPRCxPAWwCitYIdgb9FmwPRCwa9CwZ9CwY9CwPtCwPBCwbNCwaNCwZNCwP9CwOhCwQdCwRhCwYNCwXNCwWNCwS9CxSgWwCitYIdgb9FmwWtCwXtCwYtCwR9CwSRCwTtCwDhCxUQSwCitYIdgb9FmwDxCxdgSwCitYIdgb9FmwdxCwhNCwehCwhdCwexCwiNCwfhCwidCwfxCwjNCwghCwjdAwMQEUBiMiJic1NDYzMhYXExEzMhYVFAcWFhUUIwE0JiMiBhUVFBYzMjY1ATMRFAYjIiY1MxQzMjY1AREzFTMVITUzNTMRAREhFSMVJTUhESM1ARUzMjU0JxM1IRUhNSEVITUhFQE1IRUhNSEVITUhFRMzMjU0JiMjASM1MzUjNTMRIzUzJSM1MzUjNTMRIzUzAzWBZGaAAn5oZYACQ7xiclQyNND+j0pBQEpKQkBJA7pcaVJYbV1oKTb5xHHEBSjHb/htATXEBewBNm/8XH5nYssBFv1bARX9XAEUAgoBFv1bARX9XAEUvF12Ojxd/PFxcXFxcXEHIm9vb29vbwHUYnl4XnVffHhe/rMCJUlNVCANRi2bAUhFTk5FcEVOTkUBT/6GTl1RU1s2LPzJATvKcXHK/sUGHwEddKmpdP7jqfy2qVNSBANKdHR0dHR0+ThxcXFxcXEDxFApHv7T/H76/BX5fvx++vwV+QAABQBc/dUH1whzAAMAHAAgACQAKABYALAhL7AlL7AA0LAAL7AhELAC0LACL7IfAgAREjmwHy+yIB8BXbAe0LAeL7Ac0LAcL7INAAIREjmwDS+yBxwNERI5shENHBESObAU0LAUL7IZHA0REjkwMQkDBTQ2NzY2NTQmIyIGBzM2NjMyFhUUBwYGFRcjFTMDMxUjAzMVIwQYA7/8QfxEBA8eJEpcp5WQoALLAjorOThdWy/KyspLBAQCBAQGUvwx/DEDz/E6Ohgnh0qAl4t/MzRANF88QVxMW6r9TAQKngQAAQA3AAACtQMgABcAW7IIGBkREjkAsABFWLAPLxuxDxI+WbAARViwAC8bsQAMPlmxFgKwCitYIdgb9FmyAgAWERI5shUWDxESObIDDxUREjmwDxCxCAKwCitYIdgb9FmyDAAPERI5MDEhITUBNjY1NCMiBhUjNDYzMhYVFAYHByECtf2UAR84MV8yO86rh5ShSGyUAV+KAQExVBdUPi90noF3RnRXcwAAAQCHAAACEAMSAAYANgCwAEVYsAUvG7EFEj5ZsABFWLABLxuxAQw+WbIEBQEREjmwBC+xAwKwCitYIdgb9FmwAtAwMSEjEQc1JTMCEMy9AXYTAiQpnnkAAAIAR//1ArIDIAANABgASLIDGRoREjmwAxCwENAAsABFWLAKLxuxChI+WbAARViwAy8bsQMMPlmwChCxEAKwCitYIdgb9FmwAxCxFgKwCitYIdgb9FkwMQEUBiMiJic1NDYzMhYVJzQjIgcVFBYzMjcCsqGTlaACpJGSpMxqYwQ3MmUDATaap6aTrZuqrJkJlofFVEGKAAIASP/wA9AEnQAVACEAZ7IWIiMREjmwFhCwCdAAsABFWLAJLxuxCRY+WbAARViwEC8bsRAMPlmyFgkQERI5fLAWLxixAgGwCitYIdgb9FmyAAIJERI5sBAQsRIBsAorWCHYG/RZsAkQsRwBsAorWCHYG/RZMDEBBiMiJjU0NjYzMhYVFRAABSM1MjY2JzI3NTQmIyIGFRQWAqphf7jKdNCA1PD+vP60IZeTVYhmM1lKSVpWAcRQy7lyw3D75E3+wf7BA+YvaN5CbGNYbFNPWwADAE//8APYBJ0AFQAgACoAg7IIKywREjmwCBCwGdCwCBCwKNAAsABFWLATLxuxExY+WbAARViwCC8bsQgMPlmyKAgTERI5sCgvtG8ofygCXbL/KAFdsg8oAXGxGQGwCitYIdgb9FmyAhkoERI5sg4oGRESObAIELEeAbAKK1gh2Bv0WbATELEjAbAKK1gh2Bv0WTAxARQHFhYVFAYjIiY1NDY3JjU0NjMyFgE0JiMiBhUUFjI2AzQjIgYUFjMyNgO8pVpn8dPS82hap+PFxuT++1tKSFpalFkciUBGRkJDRANTqFMpjWGes7SdYo0oVqWXs7H9cT9BQT8+R0cCInM8bkREAAEAMQAAA9sEjQAGADqyAQcIERI5ALAARViwBS8bsQUWPlmwAEVYsAEvG7EBDD5ZsAUQsQMBsAorWCHYG/RZsgAFAxESOTAxAQEhASE1IQPb/hH+zwHw/YYDqgPq/BYDo+oAAgBP//AD8ASiABMAHwBeshQgIRESObAUELAM0ACwAEVYsAAvG7EAFj5ZsABFWLAMLxuxDAw+WbAAELEBAbAKK1gh2Bv0WbIGAAwREjmwBi+xFAGwCitYIdgb9FmwDBCxGgGwCitYIdgb9FkwMQEVIgYHNjMyFhUUBiMiJjU1EAAhAyIGBxUUMzI2NTQmAybUxRdnn63H/8Xh/AFmAU/iQVsWtEtgXASi7YOOZdK0r+T540kBNgFX/YEyHzbFZEpPTwABAE//8APaBI0AGgBtsgwbHBESOQCwAEVYsAEvG7EBFj5ZsABFWLAMLxuxDAw+WbABELEDAbAKK1gh2Bv0WbIHAQwREjmwBy+xFwGwCitYIdgb9FmyBQcXERI5sAwQsRIBsAorWCHYG/RZshASFxESObIaFxIREjkwMRMTIRUhBzYzMhYQBiMiJCchFjMyNTQmIyIHB2tPAt/+DR9uVsLN9s69/voEASEHn6JcXlw7FQI1Aljn0CjF/pjhw5Vwr09fKg8AAgAzAAAD8wSNAAoADgBXsg4PEBESObAOELAJ0ACwAEVYsAkvG7EJFj5ZsABFWLAELxuxBAw+WbIBCQQREjmwAS+xAgGwCitYIdgb9FmwBtCyCAQJERI5sAEQsAvQsg0JBBESOTAxATMVIxUhNSEnASEBMxEHA2mKiv7f/fsQAhUBIf3h/hIB2erv770C4f1MAUocAAEAL//wA9kEnQAmAIOyICcoERI5ALAARViwDi8bsQ4WPlmwAEVYsBkvG7EZDD5ZsAHQsAEvsm8BAV2y/wEBXbIfAQFdso8BAXGwDhCxBwGwCitYIdgb9FmwDhCwCtCwARCxJQGwCitYIdgb9FmyFCUBERI5sBkQsB3QsgQdAV2wGRCxIAGwCitYIdgb9FkwMQEzMjY1NCYjIgYVITQ2MzIWFRQGBxYVFAQjIiY1IRQWMzI2NTQnIwFyglpVVk1FWP7f9MLW9mpd3P721877ASJqTVRcwIYCs0s9OUA1LJS2sZ1YfyM90pu7wqU4R0s+jgEAAQA4AAAD4ASdABgAVrIJGRoREjkAsABFWLAQLxuxEBY+WbAARViwAC8bsQAMPlmxFwGwCitYIdgb9FmwAtCyAxAAERI5sBAQsQkBsAorWCHYG/RZsBAQsAzQshYAEBESOTAxISE1ATY2NTQmIyIGFSE0NjMyFhUUBgcHIQPg/HMBpldKS0pQW/7e/sTU7n+5uAIUwwGATH0mO0ddS6/ivqxsupOSAAEAlQAAAuUEigAGAEGyAQcIERI5ALAARViwBS8bsQUWPlmwAEVYsAAvG7EADD5ZsgQABRESObAEL7EDAbAKK1gh2Bv0WbICAwUREjkwMSEhEQU1JTMC5f7f/tECNBwDOEThtQACAE//8APYBJ0ADQAZAEiyAxobERI5sAMQsBbQALAARViwCi8bsQoWPlmwAEVYsAMvG7EDDD5ZsAoQsRABsAorWCHYG/RZsAMQsRYBsAorWCHYG/RZMDEBFAYjIiYnNTQ2MzIWFyU0IyIHERQWMzI2NwPY7NjX7ALt1tXvAv7epJ0FTlZTTgEBz+X69uHz5v364gjq2f7odXVvdAABADcAAAQEBI0ACQBGALAARViwBy8bsQcWPlmwAEVYsAIvG7ECDD5ZsQABsAorWCHYG/RZsgQAAhESObAHELEFAbAKK1gh2Bv0WbIJBQcREjkwMSUhFSE1ASE1IRUBtgJO/DYCSv2zA8To6JgDC+qVAAAB//8AAARPBI0ACAAxALAARViwAS8bsQEWPlmwAEVYsAcvG7EHFj5ZsABFWLAELxuxBAw+WbIAAQQREjkwMQETIQERIREBIQIm7wE6/mX+3v5tATgCngHv/Qn+agGiAusAAAEAAwAABFwEjQALAFMAsABFWLABLxuxARY+WbAARViwCi8bsQoWPlmwAEVYsAQvG7EEDD5ZsABFWLAHLxuxBww+WbIAAQQREjmyBgEEERI5sgMABhESObIJBgAREjkwMQETIQEBIQMDIQEBIQIkzgFO/poBgv6q3tf+sgFw/poBSwMVAXj9vv21AX7+ggJLAkIAAQAfAAAF2wSNAAwAYLIFDQ4REjkAsABFWLAJLxuxCRY+WbAARViwCy8bsQsWPlmwAEVYsAEvG7EBFj5ZsABFWLADLxuxAww+WbAARViwBi8bsQYMPlmyAAMBERI5sgUBBhESObIKBgkREjkwMQETIQEhAwMhASETEzMEMZQBFv7z/uCyr/7g/vIBF5S0/gF0Axn7cwLf/SEEjfzjAx0AAAH//wAABIkEjQAIADEAsABFWLADLxuxAxY+WbAARViwBy8bsQcWPlmwAEVYsAUvG7EFDD5ZsgEDBRESOTAxARc3ASEBIQEhAjcLCwEMATD+Vv7I/lgBLwFANzQDUPtzBI0AAQBd//AEMASNABAANrIEERIREjkAsABFWLAJLxuxCRY+WbAARViwBC8bsQQMPlmxDAGwCitYIdgb9FmwCRCwENAwMQERFAQjIiQ1ESERFjMyNjURBDD+/ubl/voBIgbDYWUEjf0Ox+TkxgLz/P+0WmcC9AABACAAAAQvBI0ABwAvALAARViwBi8bsQYWPlmwAEVYsAIvG7ECDD5ZsAYQsQABsAorWCHYG/RZsATQMDEBIREhESE1IQQv/ob+3v6NBA8Do/xdA6PqAAEAOv/wBAEEnQAmAGyyEScoERI5ALAARViwCi8bsQoWPlmwAEVYsBwvG7EcDD5ZsgMcChESObIOHAoREjmyCQ4BXbJWDgFdsAoQsREBsAorWCHYG/RZsAMQsBXQsiEcChESObIGIQFdsBwQsSQBsAorWCHYG/RZMDEBNC4ENTQ2MzIEFSE0JiMiBhQWFxYWFRQGIyImJjUhFBYzMjYC62LsoWgy+sXXAQn+32dXTWBkdOnJ9tWR6n8BInNzTlsBOTpGOD9WcU6WwsOpQFZEZj8dM7SZnLVernddUkAAAAIAYwAABEwEjQAOABUAYLIAFhcREjmwFNAAsABFWLAELxuxBBY+WbAARViwAi8bsQIMPlmwAEVYsA0vG7ENDD5ZshAEAhESObAQL7EAAbAKK1gh2Bv0WbILAAQREjmwBBCxFAGwCitYIdgb9FkwMQEjESERITIWFRQGBwEVIQEzMjU0IyMCOrX+3gHm3vhndAEI/sj+ccS1vbwBkv5uBI23p3yhM/4tDAJ7lZMAAAIAQf8pBH8EnQAUACIASLIQIyQREjmwEBCwGNAAsABFWLAQLxuxEBY+WbAARViwCC8bsQgMPlmwEBCxGAGwCitYIdgb9FmwCBCxHwGwCitYIdgb9FkwMQEUBgcXByUGIyIAETU0EjYzMhYSFwU0JiMiBhUVFBYzMjY1BH9vYcS0/vUpKvP+04b4oZ73iQH+34Z4fIKHeHaHAi+f7kqTnM0GATgBDSesAQaPjP77qgWmsrKmLqW0tKgAAAIAYwAABDUEjQALABQAT7ILFRYREjmwCxCwDdAAsABFWLADLxuxAxY+WbAARViwAS8bsQEMPlmyDAMBERI5sAwvsQABsAorWCHYG/RZsAMQsRMBsAorWCHYG/RZMDEBESERITIWFhUUBCMnMzI2NTQmJyMBhf7eAfGO3Hf++uDKz1xlZVnSAX/+gQSNZbp1rc3pTENNXgEAAgBA//AEfgSdABEAHwBIsgQgIRESObAEELAV0ACwAEVYsA0vG7ENFj5ZsABFWLAELxuxBAw+WbANELEVAbAKK1gh2Bv0WbAEELEcAbAKK1gh2Bv0WTAxARQCBiMiJgInNTQSNjMyFhIXBTQmIyIGFRUUFjMyNjUEfob5np/5iAGG+KGe94kB/t6FeHyBhHt0hwIvq/76jowBA6k0rAEGj4z++6oFprKypi6jtrSoAAABAGMAAARyBI0ACQBFALAARViwBS8bsQUWPlmwAEVYsAgvG7EIFj5ZsABFWLAALxuxAAw+WbAARViwAy8bsQMMPlmyAgUAERI5sgcFABESOTAxISEBESERIQERIQRy/t/+NP7eASIBzAEhAtb9KgSN/SkC1wAAAQBjAAAFowSNAA4AYLIBDxAREjkAsABFWLAALxuxABY+WbAARViwAi8bsQIWPlmwAEVYsAQvG7EEDD5ZsABFWLAILxuxCAw+WbAARViwDC8bsQwMPlmyAQAEERI5sgcABBESObIKAAQREjkwMQkCIREhNRMBIwETFSERAeABIwEhAX/+3R7+xcH+xh7+3QSN/O8DEftz7AJk/LADTf2f7ASNAAABAGMAAAOYBI0ABQApALAARViwBC8bsQQWPlmwAEVYsAIvG7ECDD5ZsQABsAorWCHYG/RZMDElIRUhESEBhQIT/MsBIujoBI0AAAEAYwAABHUEjQAMAEwAsABFWLAELxuxBBY+WbAARViwCC8bsQgWPlmwAEVYsAIvG7ECDD5ZsABFWLALLxuxCww+WbIAAggREjmyBgIEERI5sgoCCBESOTAxAQcRIREhETcBIQEBIQIEf/7eASJiARkBav5eAa3+qgGzff7KBI3+GoQBYv31/X4AAAEAIP/wA3kEjQANADCyBQ4PERI5ALAARViwAC8bsQAWPlmwAEVYsAUvG7EFDD5ZsQsBsAorWCHYG/RZMDEBIREUBiMiJjUhFDMyNwJXASLrudLjASKTgAIEjfz9uOLJu5yrAAABAHYAAAGYBI0AAwAdALAARViwAi8bsQIWPlmwAEVYsAAvG7EADD5ZMDEhIREhAZj+3gEiBI0AAAEAYwAABHMEjQALAGIAsABFWLAGLxuxBhY+WbAARViwCi8bsQoWPlmwAEVYsAAvG7EADD5ZsABFWLAELxuxBAw+WbIJAAoREjl8sAkvGLRACVAJAnGywAkBXbQwCUAJAl2xAgGwCitYIdgb9FkwMSEhESERIREhESERIQRz/t/+M/7eASIBzQEhAcb+OgSN/iIB3gABAEn/8ARbBJ0AHgBrshwfIBESOQCwAEVYsAovG7EKFj5ZsABFWLADLxuxAww+WbIOCgMREjmyCw4BXbAKELERAbAKK1gh2Bv0WbADELEYAbAKK1gh2Bv0WbIdCgMREjmwHS+0jx2fHQJdsRwJsAorWCHYG/RZMDElBgQjIgADNRAAMzIEFyEmJiMiBgcVFBYzMjc1IzUhBFtE/vuk+v7aBQEg9OYBABf+6Q5ja3iDAYqMfjngAgONR1YBJQEBTgEIATHKylVWpqNEq6Qqps0AAQBjAAADowSNAAkATgCwAEVYsAQvG7EEFj5ZsABFWLACLxuxAgw+WbIJAgQREjmwCS+0bAl8CQJdsjkJAV2xAAGwCitYIdgb9FmwBBCxBgGwCitYIdgb9FkwMQEhESERIRUhFSEDbv4X/t4DQP3iAekBxv46BI3q9AABADr/EwQBBXMAKwB5shQsLRESOQCwAEVYsAovG7EKFj5ZsABFWLAfLxuxHww+WbAARViwIi8bsSIMPlmyAyIKERI5sAoQsA3QsAoQsRQJsAorWCHYG/RZsAMQsRkJsAorWCHYG/RZshEUGRESObAiELEpCbAKK1gh2Bv0WbImKQMREjkwMQE0LgQ1NDY3NTMVFhYVITQmIyIGFBYXFhYVFAYHFSM1JiY1IRQWMzI2Auti7KFoMtOwoLLK/t9nV01gZHTpycuvoMblASJzc05bATk6Rjg/VnFOibwQ2dwXvpFAVkRmPx0ztJmPrhDh4RPLoV1SQAABAEAAAAQ/BJ0AHQB2shkeHxESOQCwAEVYsBIvG7ESFj5ZsABFWLAFLxuxBQw+WbIdEgUREjmwHS+ynx0BXbEAB7AKK1gh2Bv0WbAFELEDAbAKK1gh2Bv0WbAH0LAI0LAAELAL0LAdELAN0LIWHRIREjmwEhCxGAGwCitYIdgb9FkwMQEhBgchFSE1MzY2JyM1MycmNjMyFhUhNCMiBhcXIQNu/pgCXQKY/EcKKSsDoZwCBuPGy+P+34tDRgUEAW8B3JBj6ekKhWSnV9Xu2ca3cGtXAAEABgAAA6AEjQAYAHOyABkaERI5ALAARViwAS8bsQEWPlmwAEVYsAwvG7EMDD5ZsgAMARESObIIAQwREjmwCC+wA9B8sAMvGLEFB7AKK1gh2Bv0WbAIELEKArAKK1gh2Bv0WbAO0LAIELAQ0LAFELAT0LADELAV0LABELAX0DAxARMhAzMVIwcVIRUhFSE1ITUhNSchNTMDIQHTngEv57L6EQEL/vX+3/71AQsL/wC45gEwAsgBxf3hqSkbp9rapysZqQIfAAEAYwAAA6gEjQAFADOyAQYHERI5ALAARViwBC8bsQQWPlmwAEVYsAIvG7ECDD5ZsAQQsQABsAorWCHYG/RZMDEBIREhESEDqP3d/t4DRQOj/F0EjQAAAv//AAAEiQSNAAMACAA9sgUJChESObAFELAC0ACwAEVYsAIvG7ECFj5ZsABFWLAALxuxAAw+WbIFAgAREjmxBwGwCitYIdgb9FkwMSEhASEDJwcDIQSJ+3YBqAE4kgsLwAGYBI3+wjM2/Z0AAwBA//AEfgSdAAMAFQAjAHmyCCQlERI5sAgQsAHQsAgQsBnQALAARViwES8bsREWPlmwAEVYsAgvG7EIDD5ZsgMRCBESOXywAy8YssADAV20MANAAwJdtEADUAMCcbEAAbAKK1gh2Bv0WbARELEZAbAKK1gh2Bv0WbAIELEgAbAKK1gh2Bv0WTAxASE1IQUUAgYjIiYCJzU0EjYzMhYSFwU0JiMiBhUVFBYzMjY1Ax7+iwF1AWCG+Z6f+YgBhvihnveJAf7ehXh8gYR7dIcBx+qCq/76jowBA6k0rAEGj4z++6oFprKypi6jtrSoAAH//wAABIkEjQAIADiyBwkKERI5ALAARViwAi8bsQIWPlmwAEVYsAAvG7EADD5ZsABFWLAELxuxBAw+WbIHAgAREjkwMSEhASEBIQEnBwEu/tEBqAE4Aar+0P70CwsEjftzA08zNgAAAwBKAAADYASNAAMABwALAGayBAwNERI5sAQQsAHcsAQQsAncALAARViwCi8bsQoWPlmwAEVYsAAvG7EADD5ZsQIBsAorWCHYG/RZsgcKABESObAHL7JQBwFxsQQBsAorWCHYG/RZsAoQsQgBsAorWCHYG/RZMDEhITUhJyE1ITchNSEDYPzqAxZR/YwCdFH86gMW6f3q0+oAAAEAYwAABHwEjQAHAECyAQgJERI5ALAARViwBi8bsQYWPlmwAEVYsAAvG7EADD5ZsABFWLAELxuxBAw+WbAGELECAbAKK1gh2Bv0WTAxISERIREhESEEfP7e/iv+3gQZA6P8XQSNAAEASAAABAQEjQAMAEWyBg0OERI5ALAARViwCC8bsQgWPlmwAEVYsAMvG7EDDD5ZsQEBsAorWCHYG/RZsAXQsAgQsQoBsAorWCHYG/RZsAfQMDEBAyEVITUBATUhFSETAqjvAkv8RAE0/swDof3a5QJQ/pnpmAHAAZ6X6v69AAMAQQAABZYEjQARABcAHABxsggdHhESObAIELAU0LAIELAa0ACwAEVYsBEvG7ERFj5ZsABFWLAHLxuxBww+WbIAEQcREjmwAC+yBgcRERI5sAYvsAnQsAAQsA/QsAYQsRsJsAorWCHYG/RZsBTQsAAQsRoJsAorWCHYG/RZsBXQMDEBFgQVFAQHFSE1JiQ1NCQ3NSEBBhcRBgYFNCcRNgN9+wEe/uH6/t/7/uABHP8BIf3lBP59ewMQ9/cEFw/yzdL9D2trD/jVz/IPdv266RYB8gt4btsW/g4WAAABAEEAAAVMBI0AFwBdsgsYGRESOQCwAEVYsBEvG7ERFj5ZsABFWLAWLxuxFhY+WbAARViwBC8bsQQWPlmwAEVYsAovG7EKDD5ZsgAKBBESObAAL7EJAbAKK1gh2Bv0WbAM0LAAELAV0DAxATY2NxEhEQIABxEhESYAEREhERYWFxEhA1duZAEBIgH+/PD+3/H+/AEhAV90ASEB+xKirgEw/tn++P7KGP7wAQ8YATcBDQEi/tWcsRgCkAABAEoAAASHBJ0AIwBVsgckJRESOQCwAEVYsBkvG7EZFj5ZsABFWLAPLxuxDww+WbAARViwIi8bsSIMPlmwGRCxBwGwCitYIdgb9FmwDxCxEQGwCitYIdgb9FmwINCwIdAwMSU2Njc1NCYjIgYVFRQWFxUhNTMmETU0NjYzMgAVFRQGBzMVIQKgZF8Cg3t5gmNn/im90of5newBNGxmw/4o7ymokT2PmJaULJexKO/rnAERFoflg/7m4BZ/10zrAAABACD/7AV0BI0AGQBushYaGxESOQCwAEVYsAIvG7ECFj5ZsABFWLAOLxuxDgw+WbAARViwGC8bsRgMPlmwAhCxAAGwCitYIdgb9FmwBNCwBdCyCAIOERI5sAgvsA4QsQ8BsAorWCHYG/RZsAgQsRUBsAorWCHYG/RZMDEBITUhFSEVNjMyFhUUBiM1MjY1NCYjIgcRIQF1/qsD0v6lgH3j/f3qZ19xcmpv/t4Do+rqwSDXxb293ExNYVYd/gUAAQBA//AEUgSdABsAk7IKHB0REjkAsABFWLAKLxuxChY+WbAARViwAy8bsQMMPlmyDgoDERI5sAoQsRABsAorWCHYG/RZshMKAxESObATL7QfEy8TAnK0jxOfEwJxsv8TAV2yDxMBcbSfE68TAnK0bBN8EwJdtDkTSRMCXbEUAbAKK1gh2Bv0WbADELEYAbAKK1gh2Bv0WbIbAwoREjkwMQEGBCMiAAM1EAAzMgQXISYjIgchFSEWFjMyNjcEUQz+6+Lz/ukEARvx4gEQFP7fCtvLGwFK/rQNbm9tbwUBj7/gASkBBUIBBQE44sfA+emBeVhfAAIAHgAABy4EjQAYACEAerIEIiMREjmwBBCwGdAAsABFWLATLxuxExY+WbAARViwAy8bsQMMPlmwAEVYsAsvG7ELDD5ZsBMQsQUBsAorWCHYG/RZsAsQsQ0BsAorWCHYG/RZshUTAxESObAVL7EZAbAKK1gh2Bv0WbADELEaAbAKK1gh2Bv0WTAxARQEIyERIQMGAgYHIyc3PgI3EyERMzIEBREzMjY1NCYnBy7+9OX+EP7bDAxcuKE6AytGQyIJEgNgz+UBC/1B1V1saVkBj7HeA6P+1vj++XgC7QYLTqOzAev+i9kQ/rpfSUZWAgACAGMAAAcnBI0AEgAbAJqyARwdERI5sAEQsBPQALAARViwAi8bsQIWPlmwAEVYsBEvG7ERFj5ZsABFWLALLxuxCww+WbAARViwDy8bsQ8MPlmyAQILERI5fLABLxiywAEBXbQwAUABAl20QAFQAQJxsgQCCxESObAEL7ABELENAbAKK1gh2Bv0WbAEELETAbAKK1gh2Bv0WbALELEUAbAKK1gh2Bv0WTAxASERIREzMgQVFAQjIREhESERIQERMzI2NTQmJwGFAcEBIs/lAQv+9OX+EP4//t4BIgLj1VlvbVgCrwHe/ovZsLHeAcb+OgSN/aL+ulxMSVQBAAABACAAAAV0BI0AFQBcsgcWFxESOQCwAEVYsAIvG7ECFj5ZsABFWLAMLxuxDAw+WbAARViwFC8bsRQMPlmwAhCxAAGwCitYIdgb9FmwBNCwBdCyCAIMERI5sAgvsREBsAorWCHYG/RZMDEBITUhFSEVNjMyFhcRIRE0JiMiBxEhAXX+qwPS/qWAePLxAv7eZ3tqb/7eA6Pq6sEg2df+rgFKbmAd/gUAAQBj/qcEfASNAAsAULIDDA0REjkAsAIvsABFWLAGLxuxBhY+WbAARViwCi8bsQoWPlmwAEVYsAAvG7EADD5ZsABFWLAELxuxBAw+WbEIAbAKK1gh2Bv0WbAJ0DAxISERIREhESERIREhBHz+kf7e/ngBIgHVASL+pwFZBI38XAOkAAIAYwAABEQEjQAMABMAYbIDFBUREjmwAxCwEdAAsABFWLALLxuxCxY+WbAARViwCS8bsQkMPlmwCxCxAAGwCitYIdgb9FmyAwsJERI5sAMvsAkQsQ0BsAorWCHYG/RZsAMQsREBsAorWCHYG/RZMDEBIRUzMgQVFAQjIREhATI1NCMjEQPL/brP7QED/vvq/g4DaP6Pyc/PA6SpybGyzwSN/Fyaj/7XAAIAIf6zBToEjQAOABQAXbISFRYREjmwEhCwCdAAsAkvsABFWLAELxuxBBY+WbAARViwCi8bsQoMPlmxAAGwCitYIdgb9FmwBtCwB9CwCRCwDNCwBxCwD9CwENCwBBCxEQGwCitYIdgb9FkwMTc2NjcTIREzESERIREhESEhESEHAn9gSAYHA2qc/t/9Kf7fAbABrP7TAwzpZs3CAa/8XP3KAU3+swI2ArrL/ssAAAEAFgAABlkEjQAVAKCyARYXERI5ALAARViwCS8bsQkWPlmwAEVYsA0vG7ENFj5ZsABFWLARLxuxERY+WbAARViwAi8bsQIMPlmwAEVYsAYvG7EGDD5ZsABFWLAULxuxFAw+WbIQCQIREjl8sBAvGLSAEJAQAl2ywBABXbQwEEAQAl20EBAgEAJxsQABsAorWCHYG/RZsATQshMQABESObATELAI0LAQELAL0DAxASMRIREjAyEBASETMxEhETMTIQEBIQQnXv7fYc/+ngE9/uIBUMtYASFXygFQ/uEBPv6eAbj+SAG4/kgCWgIz/jwBxP48AcT91f2eAAABAD7/8AP6BJ0AJgCgsiUnKBESOQCwAEVYsAovG7EKFj5ZsABFWLAWLxuxFgw+WbAKELEDAbAKK1gh2Bv0WbIGFgoREjmyJQoWERI5sCUvsvwlAV2yDCUBcbI/JQFxss8lAXGynyUBcbRsJXwlAl20OSVJJQJdsSIIsAorWCHYG/RZtNYi5iICXbJWIgFdshAiJRESObIaFgoREjmwFhCxHQGwCitYIdgb9FkwMQE0JiMiBhUhNDYzMhYVFAYHFhYVFAQjIiQ1IRYWMzI2NTQnIzUzNgLGX1dHWP7e+Mve92hZaGz+++PT/v8BIgJeVl9kxJOdpwM3PUE2LZizp5VZjCgjjl6ftryiN0FJQ40DwQQAAQBjAAAEdgSNAAkATLIACgsREjkAsABFWLAALxuxABY+WbAARViwBy8bsQcWPlmwAEVYsAIvG7ECDD5ZsABFWLAFLxuxBQw+WbIEAAIREjmyCQACERI5MDEBIREhEQEhESERA1QBIv7e/jH+3gEiBI37cwLa/SYEjf0mAAEAYwAABFIEjQAMAFuyCg0OERI5ALAARViwBC8bsQQWPlmwAEVYsAgvG7EIFj5ZsABFWLACLxuxAgw+WbAARViwCy8bsQsMPlmyBgIEERI5sAYvsQEBsAorWCHYG/RZsgoBBhESOTAxASMRIREhETMTIQEBIQH2cf7eASJt8QFM/q8BdP6fAbj+SASN/jwBxP3J/aoAAAEAHgAABG8EjQARAE+yBBITERI5ALAARViwAC8bsQAWPlmwAEVYsAEvG7EBDD5ZsABFWLAJLxuxCQw+WbAAELEDAbAKK1gh2Bv0WbAJELELAbAKK1gh2Bv0WTAxAREhESEDBgIGByMnNz4CNxMEb/7e/tsMDVy1nz4DHU5GJAgUBI37cwOj/tr9/vx5A+0EC0qepQIEAAEAG//sBGkEjQAQAESyBRESERI5ALAARViwAS8bsQEWPlmwAEVYsBAvG7EQFj5ZsABFWLAHLxuxBww+WbIABwEREjmxCwGwCitYIdgb9FkwMQETIQEHBgcHJycWMzI2NwEhAlrcATP+ZDFlujxPAhg4MkYa/kkBOgJiAiv8fF6yDAED6QQoMgNfAAEAY/6zBU8EjQALAEayCQwNERI5ALACL7AARViwBi8bsQYWPlmwAEVYsAovG7EKFj5ZsABFWLAELxuxBAw+WbEAAbAKK1gh2Bv0WbAI0LAJ0DAxJTMDIREhESERIREhBHzTFP7z/DUBIgHVASLp/coBTQSN/FwDpAAAAQBGAAAERQSNABEAR7IEEhMREjkAsABFWLAILxuxCBY+WbAARViwEC8bsRAWPlmwAEVYsAAvG7EADD5Zsg0IABESObANL7EEAbAKK1gh2Bv0WTAxISERBiMgJicRIREUFjMyNxEhBEX+33hi/vr7AwEiaHpocgEhAZsf1NkBZP6nb2AdAgsAAAEAYwAABksEjQALAFCyBQwNERI5ALAARViwAi8bsQIWPlmwAEVYsAYvG7EGFj5ZsABFWLAKLxuxChY+WbAARViwAC8bsQAMPlmxBAGwCitYIdgb9FmwCNCwCdAwMSEhESERIREhESERIQZL+hgBIgFBASIBQQEiBI38XAOk/FwDpAABAGP+swceBI0ADwBZsgsQERESOQCwAi+wAEVYsAYvG7EGFj5ZsABFWLAKLxuxChY+WbAARViwDi8bsQ4WPlmwAEVYsAQvG7EEDD5ZsQABsAorWCHYG/RZsAjQsAnQsAzQsA3QMDElMwMhESERIREhESERIREhBkvTFP7z+mYBIgFBASIBQQEi6f3KAU0EjfxcA6T8XAOkAAIACgAABWAEjQAMABUAYbIIFhcREjmwCBCwFNAAsABFWLAHLxuxBxY+WbAARViwAy8bsQMMPlmwBxCxBQGwCitYIdgb9FmyCgcDERI5sAovsAMQsQ0BsAorWCHYG/RZsAoQsRMBsAorWCHYG/RZMDEBFAQjIREhNSERMzIEATI2NTQmJyMRBWD+9OX+EP6LApfP5QEL/hZdbGlZ3AGPsd4Do+r+i9n+ql9JRlYC/rr//wBjAAAF1wSNACYCCAAAAAcB4wQ/AAAAAgBjAAAERASNAAoAEwBSsggUFRESObAIELAL0ACwAEVYsAUvG7EFFj5ZsABFWLADLxuxAww+WbIIBQMREjmwCC+wAxCxCwGwCitYIdgb9FmwCBCxEQGwCitYIdgb9FkwMQEUBCMhESERMzIEATI2NTQmJyMRBET+9OX+EAEiz+UBC/4WXWxpWdwBj7HeBI3+i9n+ql9JRlYC/roAAQAx//AEQwSdABwAkLILHR4REjkAsABFWLASLxuxEhY+WbAARViwGS8bsRkMPlmyABkSERI5sQMBsAorWCHYG/RZsgkSGRESObAJL7QfCS8JAnK0jwmfCQJxsv8JAV2yDwkBcbSfCa8JAnK0bAl8CQJdtDkJSQkCXbEGAbAKK1gh2Bv0WbASELELAbAKK1gh2Bv0WbIOEhkREjkwMQEWFjMyNjchNSEmIyIGByE2JDMyABEVEAAjIiQnAVMFb21ubg3+tQFKG8tqdQX+3xQBEeDyARv+6Pfh/usMAY9fWHmB6flhX8ng/sj+9jD+9f7Q4L8AAAIAY//wBmMEnQAUACIAjbIaIyQREjmwGhCwENAAsABFWLARLxuxERY+WbAARViwDC8bsQwWPlmwAEVYsAkvG7EJDD5ZsABFWLAELxuxBAw+WbIOCQwREjl8sA4vGLRADlAOAnGywA4BXbQwDkAOAl2xBwGwCitYIdgb9FmwERCxGAGwCitYIdgb9FmwBBCxHwGwCitYIdgb9FkwMQEUAgYjIiQnIxEhESERMzYAMzIAESU0JiMiBhUVFBYzMjY1BmOG+Z/Z/twepf7eASKjGAEk3/UBK/7ehXl7god4dYcCL6v++o783P44BI3+JOIBCv7E/vUHprKypi6ltLSoAAACADYAAAQfBI0ADAAVAGOyCxYXERI5sAsQsBDQALAARViwBi8bsQYWPlmwAEVYsAAvG7EADD5ZsABFWLAILxuxCAw+WbIRBgAREjmwES+xCgGwCitYIdgb9FmyAQoGERI5sAYQsRIBsAorWCHYG/RZMDEzASY1NDYzIREhESMDExQWMzMRIyIGNgEKw/3ZAcz+3r/PLlhYsLBRXwILXMSkvvtzAZv+ZQMVQ08BIE4AAAEACgAABBoEjQANAFKyAQ4PERI5ALAARViwCC8bsQgWPlmwAEVYsAIvG7ECDD5Zsg0IAhESObANL7EAB7AKK1gh2Bv0WbAE0LANELAG0LAIELEKAbAKK1gh2Bv0WTAxASMRIREjNTMRIRUhETMCxc3+3szMA0T93s0B0f4vAdG3AgXq/uUAAQAW/rMGugSNABkAmrIIGhsREjkAsAQvsABFWLAQLxuxEBY+WbAARViwFC8bsRQWPlmwAEVYsBgvG7EYFj5ZsABFWLANLxuxDQw+WbAARViwCi8bsQoMPlmwAEVYsAUvG7EFDD5ZshcKGBESObAXL7EHAbAKK1gh2Bv0WbIABxcREjmwBRCxAQGwCitYIdgb9FmwBxCwC9CyDxcHERI5sBcQsBLQMDEBEzMRIxEjAyMRIREjAyEBASETMxEhETMTIQUbxdrv1NBe/t9hz/6eAT3+4gFQy1gBIVfKAVACYv6G/csBTQG4/kgBuP5IAloCM/48AcT+PAHEAAEAY/6zBKYEjQAQAG2yABESERI5ALADL7AARViwCy8bsQsWPlmwAEVYsA8vG7EPFj5ZsABFWLAJLxuxCQw+WbAARViwBS8bsQUMPlmyDQkLERI5sA0vsQgBsAorWCHYG/RZsgAIDRESObAFELEBAbAKK1gh2Bv0WTAxARMzESMRIwMjESERIREzEyEC3uPl78b7cf7eASJt8QFMAlb+kv3LAU0BuP5IBI3+PAHEAAEAYwAABP8EjQAUAGSyCxUWERI5ALAARViwBi8bsQYWPlmwAEVYsBMvG7ETFj5ZsABFWLAJLxuxCQw+WbAARViwES8bsREMPlmyABETERI5sAAvsATQsAAQsRABsAorWCHYG/RZsggQABESObAM0DAxATM1MxUzEyEBASEDIxUjNSMRIREhAYVApzPxAUz+rwF0/p/7N6dA/t4BIgLJ2toBxP3J/aoBuM3N/kgEjQAAAQAgAAAFhQSNAA4AarIADxAREjkAsABFWLAGLxuxBhY+WbAARViwCi8bsQoWPlmwAEVYsAIvG7ECDD5ZsABFWLANLxuxDQw+WbIIAgYREjmwCC+xAQGwCitYIdgb9FmwBhCxBAGwCitYIdgb9FmyDAEIERI5MDEBIxEhESE1IREzEyEBASEDKnH+3v6JApls8gFM/q4BdP6gAbj+SAOj6v48AcT9yf2qAAACAED/6wXVBKwAIgAvAIWyFDAxERI5sBQQsCPQALAARViwDC8bsQwWPlmwAEVYsBovG7EaFj5ZsABFWLAALxuxAAw+WbAARViwBC8bsQQMPlmyAgQaERI5sAIvsBoQsSwBsAorWCHYG/RZsA3QsAQQsRQBsAorWCHYG/RZsAAQsSIBsAorWCHYG/RZsiYUGhESOTAxBSInBiMgABE1NDY2MxUiBgcVFBYzJic1NBIzMhIXFRQHFjMBFBYXNjc1NCYjIgYVBdXrt5ew/sT+kILqlmd4As/EoQLqyNHvApVCY/2OVFGXBUlTTFkNNj4BQQEeOKH/ivOpkzKvv6H9MOgBGP7251jfqAcBrX+kMmvROY6KhIcA/////wAABE8EjQAmAdMAAAAHAiYAOP7LAAEAA/6zBJsEjQAPAGmyChARERI5ALAHL7AARViwAS8bsQEWPlmwAEVYsA8vG7EPFj5ZsABFWLALLxuxCww+WbAARViwCS8bsQkMPlmyAAkBERI5sgoBCRESObIDCgAREjmxBAGwCitYIdgb9FmyDQAKERI5MDEBEyEBEzMRIxEjAwMhAQEhAiTOAU7+munY76be1/6yAXD+mgFLAxUBeP2+/p39ywFNAX7+ggJLAkIAAQAg/rMGYwSNAA8AXrIJEBEREjkAsAIvsABFWLAILxuxCBY+WbAARViwDi8bsQ4WPlmwAEVYsAQvG7EEDD5ZsQABsAorWCHYG/RZsAgQsQYBsAorWCHYG/RZsArQsAvQsAAQsAzQsA3QMDElMwMhESERITUhFSERIREhBY/UFP70/DX+qAO8/r0B1QEh6f3KAU0Do+rq/UYDpAAAAQBGAAAERQSNABcAULIEGBkREjkAsABFWLALLxuxCxY+WbAARViwFi8bsRYWPlmwAEVYsAAvG7EADD5ZshALABESObAQL7EHAbAKK1gh2Bv0WbAE0LAQELAT0DAxISERBgcVIzUmJicRIREUFhc1MxU2NxEhBEX+30Y+p93SBAEiSEmnQkIBIQGbEQjT0A/TxAFo/qlhXQ37/AcRAgsAAAEAYwAABGIEjQARAEeyBBITERI5ALAARViwAC8bsQAWPlmwAEVYsAgvG7EIDD5ZsABFWLAQLxuxEAw+WbIEAAgREjmwBC+xDQGwCitYIdgb9FkwMRMhETYzIBYXESERJiYjIgcRIWMBInhiAQj3BP7fAml3ZHb+3gSN/mQf09X+mAFiaVwe/fcAAAIAFf/wBd8EqwAaACIAZ7INIyQREjmwDRCwHNAAsABFWLAOLxuxDhY+WbAARViwAC8bsQAMPlmyHw4AERI5sB8vsRIBsAorWCHYG/RZsAPQsB8QsArQsAAQsRUBsAorWCHYG/RZsA4QsRsBsAorWCHYG/RZMDEFIAAnJiY1MxQWFz4CMzIAExUhFiEyNxcGBgMiBgchNTQmA/3+9f62GLXG4UxNDJf5k/4BHgX80hoBMqKWRjHdrnaMDAINiBABAeUJ8dBfdguO4Xz+6/78vfk12xosA9GIexRzfAACAED/8ASRBKsAFAAcAGGyCB0eERI5sAgQsBXQALAARViwAC8bsQAWPlmwAEVYsAgvG7EIDD5Zsg0ACBESObANL7AAELEPAbAKK1gh2Bv0WbAIELEVAbAKK1gh2Bv0WbANELEYAbAKK1gh2Bv0WTAxASAAERUUBgQjIgADNSEmISIHJzc2ATI2NyEVFBYCJgEhAUqR/v2c//7kBgMtGv7OmJ9GGaIBAXSODP3zhwSr/tP+92Gf+osBFAEAwvk12wo8/C+HfBR0ewAAAQA+/+wD+wSNABkAbbISGhsREjkAsABFWLACLxuxAhY+WbAARViwCy8bsQsMPlmwAhCxAAGwCitYIdgb9FmyBAACERI5shkLAhESObAZL7EYCLAKK1gh2Bv0WbIFGRgREjmwCxCxEgGwCitYIdgb9FmyDxgSERI5MDEBITUhFwEWFhUUBCMiJDUhFhYzMjY1NCMjNQJ3/fEDagH+3Ziz/vni0/7/ASECZ1hZYNGEA6Pqvv7gFbqLqr+8pj4+SUWbxwADAED/8AR+BJ0AEQAYAB8Ag7IEICEREjmwBBCwEtCwBBCwGdAAsABFWLANLxuxDRY+WbAARViwBC8bsQQMPlmwDRCxEgGwCitYIdgb9FmyFg0EERI5fLAWLxi0MBZAFgJdssAWAV20QBZQFgJxtNAW4BYCcbAEELEZAbAKK1gh2Bv0WbAWELEcAbAKK1gh2Bv0WTAxARQCBiMiJgInNTQSNjMyFhIXASIGByEmJgMyNjchFhYEfob5np/5iAGG+KGe94kB/eFqfBEB7hJ/ZGR+Ev4UEn4CL6v++o6MAQOpNKwBBo+M/vuqAVOCenqC/SGCd3eCAAABAEAAAAQ/BJ0AJgDesiQnKBESOQCwAEVYsB0vG7EdFj5ZsABFWLAMLxuxDAw+WbIGHQwREjmwBi+yXwYBXbSvBr8GAl203wbvBgJdsg8GAV2yfwYBcbAB0LABL7YfAS8BPwEDXbavAb8BzwEDXbIAAQFdsQICsAorWCHYG/RZsp8CAV2wBhCxBwKwCitYIdgb9FmynwcBXbAMELEKAbAKK1gh2Bv0WbAO0LAP0LAHELAR0LAGELAT0LACELAW0LABELAY0LABELAh0LJbIQFdsgshAV2wHRCxIwGwCitYIdgb9FmyXyMBXTAxASEVIRcVIRUhBgchFSE1MzY3IzUzNScjNTM1JjYzMhYVITQjIgYXAfsBc/6WAgFo/nEXIQKY/EcKKhaQoQKfmgbjxsvj/t+LQ0YFAs6oKhyoLSLp6QtEqA05qAzV7s28oXBrAAABAEf/8AO8BJ8AIgC/sgEjJBESOQCwAEVYsBYvG7EWFj5ZsABFWLAJLxuxCQw+WbIiFgkREjmwIi+y/yIBXbIPIgFxsg8iAV20ECIgIgJdsQACsAorWCHYG/RZsp8AAV2wCRCxBAGwCitYIdgb9FmwABCwDNCwIhCwDtCwIhCwE9CwEy+2HxMvEz8TA120rxO/EwJdsgATAV2xEAKwCitYIdgb9FmynxABXbAWELEbAbAKK1gh2Bv0WbJfGwFdsBMQsB3QsBAQsB/QMDEBIRYWMzI3FwYjIiQnIzUzNSM1MzYkMzIXByYjIgchFSEVIQNm/p0TaF1Sdhh0bNH+8x6YkJCZHgEK0XVuFmVoricBYv6TAW0BdE5NGuQfyrqoTKm80iHkHKWpTAAABABjAAAH1QSfAAMADwAdACcAsrIeKCkREjmwHhCwAdCwHhCwBNCwHhCwENAAsABFWLAjLxuxIxY+WbAARViwJi8bsSYWPlmwAEVYsAYvG7EGFj5ZsABFWLAeLxuxHgw+WbAARViwIS8bsSEMPlmwBhCwDdCwDS+wA9CwAy9ACwADEAMgAzADQAMFXbEAArAKK1gh2Bv0WbANELETArAKK1gh2Bv0WbAGELEaArAKK1gh2Bv0WbIgIx4REjmyJSMeERI5MDElITUhATQ2IBYVFRQGICY1FxQWMzI2NzU0JiMiBhUBIQERIREhAREhB5r9uwJF/Ya/ATbAvv7Kwa9aU1BYAl1PTl3+o/7f/jT+3gEiAcwBIeGUAduWubicPJa4uJsFV2ViVEdXZGNb/LMC1v0qBI39KQLXAAACACgAAATpBI0AFgAfAJeyACAhERI5sBjQALAARViwDC8bsQwWPlmwAEVYsAIvG7ECDD5ZsBbQsBYvsAfQsQQJsAorWCHYG/RZQAlvBH8EjwSfBARdsAHQsBYQsArQsAovsv8KAV20DwofCgJxtB8KLwoCXbEJCbAKK1gh2Bv0WUAJbwl/CY8JnwkEXbAU0LAKELAX0LAMELEfAbAKK1gh2Bv0WTAxJSEVITUjNTM1IzUzESEyBBUUBCMjFSEBMzI2NTQmIyMDSf7i/t/i4uLiAgTYAQP+/t3fAR7+4uNXZGRY4oSEhNBB0AIo1Kqrz0EBEVpIRlYAAAEAMP/1ArUDIAAkAJ+yHiUmERI5ALAARViwDS8bsQ0SPlmwAEVYsBcvG7EXDD5ZsgEXDRESOXywAS8YstABAV22oAGwAcABA3G0UAFgAQJxtJABoAECXbQgATABAnKwDRCxBgKwCitYIdgb9FmyCQ0XERI5sAEQsCOwCitY2BvcWbISIwEREjmyGxcNERI5slYbAV20NRtFGwJdsBcQsR4CsAorWCHYG/RZMDEBMzI1NCYjIgYVIzQ2MzIWFRQHFhUUBiMiJjUzFBYzMjY1NCcjARFSdzkxKjvNqYORq4eWt5SOrM5ENDw1elwB1lgjKh8dZnt3a3cyKY9pf4VyIjE1I1wBAAACADUAAALAAxUACgAOAEoAsABFWLAJLxuxCRI+WbAARViwBC8bsQQMPlmyAQkEERI5sAEvsQICsAorWCHYG/RZsAbQsAEQsAvQsggLBhESObINCQQREjkwMQEzFSMVIzUhJwEzATM1BwJoWFjN/qYMAWXO/pGiDgFGp5+fhwHv/jHUFgABAEX/9QKxAxUAGwBysg0cHRESOQCwAEVYsAIvG7ECEj5ZsABFWLANLxuxDQw+WbACELEDArAKK1gh2Bv0WbIHAg0REjmwBy+0kAegBwJdsBiwCitY2BvcWbIFBxgREjmyEQ0HERI5sA0QsRMCsAorWCHYG/RZshsHDRESOTAxExMhFSEHNjMyFhUUBiMiJiczFjMyNTQmIyIGB1c2Aff+sBU/RYSKqouBtALOBGVoOz0yMw0BfQGYoocbhHp7mYVlRnEzPRsKAAIARv/1AsMDJQATAB0AaLIUHh8REjmwFBCwDNAAsABFWLAALxuxABI+WbAARViwDC8bsQwMPlmwABCxAQKwCitYIdgb9FmyBgwAERI5sAYvtJAGoAYCXbAUsAorWNgb3FmyrxQBXbAMELEZArAKK1gh2Bv0WTAxARUiBgc2MzIWFRQGIyImJzU0NjMDIgcVFDMyNjU0AjqSgQ9Fa3aFrYiZrAP06JxPJHQtQgMlqFZaQY95dJ2jlT3Q6/5GMSZ7PjFjAAABADMAAAKyAxUABgAzALAARViwBS8bsQUSPlmwAEVYsAIvG7ECDD5ZsAUQsQQCsAorWCHYG/RZsgAFBBESOTAxAQEjASE1IQKy/rXYAUz+WAJ/AqL9XgJvpgADAEf/9QKyAyAAEgAcACQAkLIHJSYREjmwBxCwFdCwBxCwH9AAsABFWLAQLxuxEBI+WbAARViwBy8bsQcMPlmyIwcQERI5sCMvsi8jAV2yPyMBcrJvIwFxsv8jAXK0DCMcIwJdsBWwCitY2BvcWbKvFQFdsgIVIxESObIMIxUREjmwBxCxGgKwCitYIdgb9FmwEBCxHwKwCitYIdgb9FkwMQEUBxYVFAYjIiY1NDcmNTQ2IBYDNCMiFRQWMzI2AzQjIhUUMzICoG+Bo5GQp4NxngEKn7pqZzkwLzkTV1VXVQJAcjg8gGx5eWyBOzpwaHh2/kRRUSgtLQFsSUlNAAIAQ//0Aq4DIAAUAB4AdLIVHyAREjmwFRCwCNAAsABFWLAILxuxCBI+WbAARViwEC8bsRAMPlmyAhAIERI5sAIvtJ8CrwICXbYMAhwCLAIDXbAQELERArAKK1gh2Bv0WbACELAVsAorWNgb3FmyvxUBXbAIELEaArAKK1gh2Bv0WTAxAQYjIiY1NDYzMhYXFRQGIyM1MjY2JzI3NTQjIgYVFAHdQ1B7jLKDkKUB3ekRal42VD8haSw7AS80g4N4p6eZO9jZox5BnSZNdUY3awABAI0CiQNIA0AAAwAesgEEBRESOQCwAi+ywAIBXbEBB7AKK1gh2Bv0WTAxASE1IQNI/UUCuwKJtwAAAwCQBFgC0gbBAAMADwAZAEwAsA0vsAfQsAcvsALQsAIvQBs/Ak8CXwJvAn8CjwKfAq8CvwLPAt8C7wL/Ag1dsg8CAXGwANCwAC+yTwABXbANELAS0LAHELAY0DAxASEFIwc0NjMyFhUUBiMiJjcUFjI2NTQmIgYBzQEF/vS0gnVVVHNwV1hycDRMMDBMNAbBz+NObWxPTWprTCYyMiYpMjIAAQBjAAADvASNAAsAXQCwAEVYsAYvG7EGFj5ZsABFWLAELxuxBAw+WbILBAYREjmwCy+ynwsBcrQ5C0kLAl2xAAGwCitYIdgb9FmwBBCxAgGwCitYIdgb9FmwBhCxCAGwCitYIdgb9FkwMQEhFSEVIREhFSEVIQNm/h8CNvyoA1n9yQHhAeX96ASN6tUAAAP/+/5KBB8ETgArADcARACgsgdFRhESObAHELAx0LAHELA70ACwAEVYsCgvG7EoFD5ZsABFWLAWLxuxFg4+WbAoELAr0LArL7EAArAKK1gh2Bv0WbIHFigREjmwBy+yDgcWERI5sA4vsTcJsAorWCHYG/RZsh03DhESObIhBygREjmwFhCxMQmwCitYIdgb9FmwBxCxOwmwCitYIdgb9FmwKBCxQgmwCitYIdgb9FkwMQEjFhUVFAQjIicGFRQWFzMWFhUUBgYjIiYmNTQ2NyY1NDcmJjU1NCQzMhchAQYVFBYzMjY1NCMnAxQWMzI2NTU0JiIGFQQffTz++s5ORBk5P8i0xpH9nZTifWZaLXRjbQEE0lpOAW39LkB8Z3eUkewqZ1FMaGWiZQOgV2sWntIQGyImIQECnY9bq2VGgE5PgicxS3JMMaNkFqXLFPvVIkk7RUs4YQECv0BWVEQUQlNTRQAAAgBJ/+sEXQROABAAHABwshodHhESObAaELAJ0ACwAEVYsAkvG7EJFD5ZsABFWLAMLxuxDBQ+WbAARViwAi8bsQIMPlmwAEVYsA8vG7EPDD5ZsgAMDxESObILDA8REjmwAhCxEwGwCitYIdgb9FmwCRCxGgGwCitYIdgb9FkwMSUGIyICJycQEjMyFzczAxMjARAzMjY3NSYmIyIGA0Rw18HoCgHqzNJuGP9sc//+Dc1abQoHbFxjbKi9AQrkPAEFATS9qf3i/eQCAP7UkYlCkaOsAAACAIQAAAT7BbAAFgAeAGOyGB8gERI5sBgQsBbQALAARViwAy8bsQMYPlmwAEVYsAEvG7EBDD5ZsABFWLAQLxuxEAw+WbIXAwEREjmwFy+xAAGwCitYIdgb9FmyCgAXERI5sAMQsR0BsAorWCHYG/RZMDEBESERITIEFRQGBxYTFRQXFSEmJzU0JyUzMjU0JiMhAbD+1AJA9QEIeorvBkn+zDwFzf739u52bP7+Ajn9xwWw3c9xoTdF/vdVwzkcL75r2wbywmVrAAEAhAAABToFsAAMAFQAsABFWLAELxuxBBg+WbAARViwCC8bsQgYPlmwAEVYsAIvG7ECDD5ZsABFWLALLxuxCww+WbIGAgQREjmwBi+xAQGwCitYIdgb9FmyCgEGERI5MDEBIxEhESERMwEhAQEhAl2t/tQBLIkBZAFu/j8B8P6aAlP9rQWw/bkCR/1P/QEAAAEAcQAABE4GAAAMAFQAsABFWLAELxuxBBo+WbAARViwCC8bsQgUPlmwAEVYsAIvG7ECDD5ZsABFWLALLxuxCww+WbIHCAIREjmwBy+xAAGwCitYIdgb9FmyCgAHERI5MDEBIxEhESERMxMhAQEhAe1b/t8BIVH2AU7+rQF6/rMBwP5ABgD8pQGV/hH9tQABAIQAAAUcBbAACgBTsggLDBESOQCwAEVYsAMvG7EDGD5ZsABFWLAGLxuxBhg+WbAARViwAS8bsQEMPlmwAEVYsAkvG7EJDD5ZsgADARESObIFAwEREjmyCAAFERI5MDEBESERIREBIQEBIQGw/tQBLAHZAXT91gJJ/okChf17BbD9fwKB/S79IgABAHEAAARGBhgACgBTsggLDBESOQCwAEVYsAYvG7EGFD5ZsABFWLADLxuxAxo+WbAARViwAS8bsQEMPlmwAEVYsAkvG7EJDD5ZsgAGARESObIFBgEREjmyCAUAERI5MDEBESERIREBIQEBIQGS/t8BIQE0AVX+cAG7/qkB2v4mBhj8jQGV/gn9vQACAGMAAAQ0BI0ACwAVAEiyFRYXERI5sBUQsAvQALAARViwAS8bsQEWPlmwAEVYsAAvG7EADD5ZsAEQsQwBsAorWCHYG/RZsAAQsQ0BsAorWCHYG/RZMDEzESEyBBYXFRQCBCMDETMyNjc1NCYnYwGOpAEIlQKT/vmmb2+UhwKFjgSNjP2eN5/+/48Do/1Fl6M8p5sDAAABAED/8ARSBJ0AGQBQsgoaGxESOQCwAEVYsAovG7EKFj5ZsABFWLADLxuxAww+WbIOCgMREjmwChCxEAGwCitYIdgb9FmwAxCxFgGwCitYIdgb9FmyGQMKERI5MDEBBgQjIgADNRAAMzIEFyEmIyIDFRQWMzI2NwRRDP7r4vP+6QQBG/HiARAU/t8K2+QHb35tbwUBj7/gASkBBUIBBQE44sfA/sFKs6BYXwAAAwBjAAAEIgSNAA4AFgAeALSyGB8gERI5sBgQsALQsBgQsBHQALAARViwAS8bsQEWPlmwAEVYsAAvG7EADD5ZshcBABESObAXL7RsF3wXAl20rxe/FwJdsp8XAXG0jxefFwJyss8XAXGyPxcBcbL/FwFxsg8XAXKy/BcBXbIMFwFxsjkXAV2xDwiwCitYIdgb9Fm01g/mDwJdslYPAV2yCA8XERI5sAAQsRABsAorWCHYG/RZsAEQsR0BsAorWCHYG/RZMDEzESEyFhUUBgcWFhUUBiMDFTMyNjU0JyczMjU0JiMjYwHC6fpbVWJo7uPMzFRcmeOyr1VXtQSNpZ1YhR8ZjFytoQHl/UM3fwTDekY7AAL//wAABK0EjQAHAAoARwCwAEVYsAQvG7EEFj5ZsABFWLACLxuxAgw+WbAARViwBi8bsQYMPlmyCQQCERI5sAkvsQABsAorWCHYG/RZsgoEAhESOTAxJSEHIQEhASEBIQMDNv49Uv7eAc0BEAHR/tz+OAElk97eBI37cwGyAYoAAQCFBEkBqgYWAAgAFgCwAEVYsAAvG7EAGj5ZsATQsAQvMDEBFwYHByM1NjYBFZVBAgHhAU8GFk52g4aMZLIAAAIAagTJAx8GbgANABEAVgCwAy+ycAMBXbAH0LAHL0ALDwcfBy8HPwdPBwVdsAMQsQoKsAorWCHYG/RZsAcQsA3QsA0vsAcQsBHQsBEvsA/QsA8vQA0vDz8PTw9fD28Pfw8GXTAxARQGIyImNTMUFjMyNjUlMxcjAx++nZy+v1FKS1D+est6lwWyaYB/ajY6PDS8uwAC/JoEu/7iBn8AEwAXAJ4AsAMvsg8DAV2ycAMBXbAG0LAGL0APDwYfBi8GPwZPBl8GbwYHXbADELAJ0LAJL7AGELENCrAKK1gh2Bv0WbADELEQCrAKK1gh2Bv0WbANELAT0LADELAW0HywFi8Ysg8WAXFAEw8WHxYvFj8WTxZfFm8WfxaPFgldsBTQsBQvQA8PFB8ULxQ/FE8UXxRvFAddsBYQsBfQGbAXLxgwMQEUBiMiJiMiBhUnNDYzMhYzMjY1JzMHI/7iX0U5iCkcJnheRSuXKBsohNG0nQWDTGlDMSUiSmxCMSTZwwACAIME7ASgBoIABgAKAE8AsAMvsnADAV2wBdCwBS+wANCwAC9ACw8AHwAvAD8ATwAFXbIGBQAREjkZsAYvGLAC0BmwAi8YsgQDABESObADELAJ0LAJL7AH0LAHLzAxATMFIycHIwEzAyMBoKMBHdiXl9cDNufjpwXS5n5+AZb+8AAAAv9FBOYDYQZ8AAYACgBdALADL7JwAwFdsAHQsAEvsAbQsAYvQAsPBh8GLwY/Bk8GBV2yBAMGERI5GbAELxiwANAZsAAvGLICAwYREjmwAxCwCNCwCC+wCtCwCi9ACw8KHwovCj8KTwoFXTAxASMnByMlMwUjAzMDYdeXl9gBHaP+iqfi5gTmf3/nYAEPAAIAhATsBBwGwAAGABUAYACwAy+ycAMBXbAF0LAFL0ALDwUfBS8FPwVPBQVdsgQDBRESORmwBC8YsADQGbAALxiwAxCwAdCwAS+yAgUDERI5sAfQsAcvsA7QsA4vsA3QsggHDRESObIUDgcREjkwMQEjJwcjJTMXJzY2NTQjNzIWFRQGBwcDYc+foM8BGK66DT43eQaRkkM7AQTshobmZ3IDGRo8cVdNMEMHNwACAIQE7ANhBscABgAaAKUAsAMvsnADAV2wBNAZsAQvGLAA0BmwAC8YsAMQsAHQsAEvsAMQsAXQsAUvQBMPBR8FLwU/BU8FXwVvBX8FjwUJXbICBQMREjmwCtCwCi9ADT8KTwpfCm8KfwqPCgZdsA3QsA0vQA8PDR8NLw0/DU8NXw1vDQddsAoQsBDQsBAvsA0QsRQKsAorWCHYG/RZsAoQsRcKsAorWCHYG/RZsBQQsBrQMDEBIycHIyUzNxQGIyImIyIGFSc0NjMyFjMyNjUDYc+foM8BIJ60UDkugiMYHWVOOCmGJRgeBOx+fuHVQVtAKh0dQVw+Lx0AAQBjAAADqAXEAAcAM7IDCAkREjkAsABFWLAGLxuxBhY+WbAARViwBC8bsQQMPlmwBhCxAgGwCitYIdgb9FkwMQEhESERIREhAocBIf3d/t4CJAXE/d/8XQSNAAACAGoExgMfBm4ADAAQAFoAsAMvsnADAV2wBtCwBi9ACw8GHwYvBj8GTwYFXbADELEJCrAKK1gh2Bv0WbAGELAM0LAML7AGELAQ0LAQL7AN0LANL0ARDw0fDS8NPw1PDV8Nbw1/DQhdMDEBFAYgJjUzFBYzMjY1JzMHIwMfvf7EvL9RSktQb8uvlwWwaIKBaTY6PDS+uwACAGoEyQMjBwoADQAcAFcAsAMvsnADAV2wB9CwBy9ACw8HHwcvBz8HTwcFXbADELEKCrAKK1gh2Bv0WbAHELAN0LANL7AHELAO0LAOL7AV0LAVL7AU0LIPFA4REjmyGw4VERI5MDEBFAYjIiY1MxQWMzI2NScnNjY1NCM3MhYVFAYHFQMju6Giu8BPTkpR+g9HQIwHqqtLSAWwZ4CAZzE6OTIeawMXGDVqUEctOwg1//8ARwKNArIFuAEHAccAAAKYABMAsABFWLAKLxuxChg+WbAQ0DAxAP//ADUCmALABa0BBwIgAAACmAATALAARViwCS8bsQkYPlmwDdAwMQD//wBFAo0CsQWtAQcCIQAAApgAEACwAEVYsAEvG7EBGD5ZMDH//wBGAo0CwwW9AQcCIgAAApgAEwCwAEVYsAAvG7EAGD5ZsBTQMDEA//8AMwKYArIFrQEHAiMAAAKYABAAsABFWLAFLxuxBRg+WTAx//8ARwKNArIFuAEHAiQAAAKYABkAsABFWLAQLxuxEBg+WbAV0LAQELAf0DAxAP//AEMCjAKuBbgBBwIlAAACmAATALAARViwCC8bsQgYPlmwGtAwMQAAAQBY/+sFJgXFABwAULIMHR4REjkAsABFWLAMLxuxDBg+WbAARViwAy8bsQMMPlmyEAwDERI5sAwQsRMBsAorWCHYG/RZsAMQsRoBsAorWCHYG/RZshwDDBESOTAxAQYAISIkAic1NBIkMyAAFyEmJiMiAhUVFBIzIBMFJBf+zv76uv7foAKgASK5AQYBNhf+0xSMhpm2s54BASIB5fT++q8BRdQ81gFMtP7w85N9/vzfMOL+/wEJAAEAWP/rBSYFxQAjAF+yDiQlERI5ALAARViwDi8bsQ4YPlmwAEVYsAUvG7EFDD5ZshIOBRESObAOELEVAbAKK1gh2Bv0WbAFELEcAbAKK1gh2Bv0WbIiDgUREjmwIi+xIQGwCitYIdgb9FkwMSUGBgcGIyIkAic1NBIkMyAEFyEmJiMiAhUVFBIzMjY3NSM1IQUmIHJIlK/E/sawA6ABKLoBAQExGv7bEZF9ncHWr2R2Fv8CLLcpTxs5sgFCzEHVAUy4/ed0ff754y7Y/vopF/fdAAIAhAAABRgFsAALABUASLIDFhcREjmwAxCwFdAAsABFWLABLxuxARg+WbAARViwAC8bsQAMPlmwARCxDAGwCitYIdgb9FmwABCxDQGwCitYIdgb9FkwMTMRITIEEhUVFAIEBwMRMzI2NTU0JieEAcXSAUqztf64z5yFz+fdzgWwt/66yCnL/r2zAQS9/DT14ibW9wIAAAIAWP/rBXwFxQARAB8ASLIEICEREjmwBBCwHNAAsABFWLANLxuxDRg+WbAARViwBC8bsQQMPlmwDRCxFQGwCitYIdgb9FmwBBCxHAGwCitYIdgb9FkwMQEUAgQjIiQCNTU0EiQzMgQSFSU0AiMiAhUVFBIzMhI1BXyo/tG6tf7Rr6kBL7m6AS+q/tXIoJ3Ix6CfxwLDzf6yvbgBUdEoywFPvr3+sMsC0gEP/vTfItT+7wEO4AAAAgBY/wMFfAXFABQAIQBIsggiIxESObAIELAY0ACwAEVYsBAvG7EQGD5ZsABFWLAILxuxCAw+WbAQELEYAbAKK1gh2Bv0WbAIELEeAbAKK1gh2Bv0WTAxARQCBxcHJQYjIiQCNTU0EiQgBBIXBTQCIyICFRUUEiASNQV8iHrqv/7eSk68/tKppwEuAXgBLKkC/tXFo6DFxAFGwwLLwP7IYsWp+RG6AVPTGNMBUr25/rLQCd8BDP736RPd/vABDuQAAQCPAAADCASMAAYAMwCwAEVYsAUvG7EFFj5ZsABFWLAALxuxAAw+WbIEAAUREjmwBC+xAwGwCitYIdgb9FkwMSEhEQU1JTMDCP7f/qgCWh8DNGvr2AABAFgAAAQ6BJ0AGQBbsgkaGxESOQCwAEVYsBEvG7ERFj5ZsABFWLAALxuxAAw+WbEYAbAKK1gh2Bv0WbICGAAREjmyAxEYERI5sBEQsQkBsAorWCHYG/RZsgwAERESObIXGBEREjkwMSEhNQE2NjU0JiMiBhUhNDY2MzIWFRQGBwUhBDr8NgH6QzxdUlho/t553Yze711//ucCKLUBpjlhOUFHY050vGi2oGCkb+0AAAEAD/6jBAkEjQAZAFyyEhobERI5ALAML7AARViwAi8bsQIWPlmxAAGwCitYIdgb9FmyBAACERI5sgUMAhESObAFL7AMELERAbAKK1gh2Bv0WbAFELEYCLAKK1gh2Bv0WbIZGAUREjkwMQEhNSEVARYWFRQGBCMiJzcWMzI2NTQmJyM1AmH99wN3/rSr25r+5rnDyjmbp5q3nqliA6Pqpv6PGvewovCAZ91YpYaAfwKKAAACACz+0gR0BIwACgAOAFMAsABFWLAJLxuxCRY+WbAARViwAi8bsQIMPlmwAEVYsAYvG7EGDD5ZsQABsAorWCHYG/RZsAYQsAXQsAUvsggGCRESObAAELAM0LINCQIREjkwMSUzFSMRIREhJwEhASERBwPQpKT+3v2LDQJ/ASX9fgFgFenq/tMBLbcD1vxdAhklAAEAaP6gBDYEjAAcAGCyGh0eERI5ALAOL7AARViwAS8bsQEWPlmxAwGwCitYIdgb9FmyBwEOERI5sAcvsRoBsAorWCHYG/RZsgUHGhESObAOELEUAbAKK1gh2Bv0WbIRFBoREjmyHBoUERI5MDETEyEVIQM2NzISFRQGBiMiJzcWFjMyNjU0JiMiB4xKAzv9sCVSjdPoiPqo6LxYPqFPjJt5bnk5AX0DD/H+0SsC/v/pmPOEeNQvM56FgJJTAAABADz+0gQyBIwABgAmALABL7AARViwBS8bsQUWPlmxAwGwCitYIdgb9FmyAAMFERI5MDEBASEBITUhBDL9y/7eAib9OwP2A+v65wTR6QACAGoExAMcBuQADAAgAIMAsAMvsnADAV2wBtCwBi9ACQ8GHwYvBj8GBF2wAxCxCQqwCitYIdgb9FmwBhCwDNCwDC+wBhCwENCwEC+wE9CwEy9ADw8THxMvEz8TTxNfE28TB12wEBCwFtCwFi+wExCxGgqwCitYIdgb9FmwEBCxHQqwCitYIdgb9FmwGhCwINAwMQEUBiAmNTMUFjMyNjUTFAYjIiYjIgYVJzQ2MzIWMzI2NQMcv/7Mv75QS0lQil9FOYgpHCd4XkYpmiYcJwWwa4GBazQ4ODQBEUxpQzElIkpsQjEkAAEAWv6bAXsAzQADABIAsAQvsALQsAIvsAHQsAEvMDEBIREhAXv+3wEh/psCMgACAED/8AZvBJ0AFQAfAJmyFyAhERI5sBcQsAHQALAARViwCy8bsQsWPlmwAEVYsAwvG7EMFj5ZsABFWLACLxuxAgw+WbAARViwAC8bsQAMPlmwDBCxDgGwCitYIdgb9FmyEQAMERI5sBEvsRIBsAorWCHYG/RZsAIQsRQBsAorWCHYG/RZsBXQsAIQsRYBsAorWCHYG/RZsAsQsRkBsAorWCHYG/RZMDEhIQUiJgInNTQSNjMFIRUhFSEVIRUhBTcRJyIGFRUUFgZu/Tn+up/5iAGG+KEBSALI/ckB4f4fAjb787a4fIGEEIwBA6k0rAEGjxDq1en9EgkCzAqypi6jtgACAGD+vwRfBKAAGAAkAFayGSUmERI5sBkQsAvQALAUL7AARViwCy8bsQsWPlmwFBCxAAGwCitYIdgb9FmyGQsUERI5fLAZLxixBAGwCitYIdgb9FmwCxCxHwGwCitYIdgb9FkwMQUgEwYjIgI1NDY2MzIWEhcVFAIEIyInNxYTMjc1NCYjIgYVFBYB8QEPMnekzOt+4Yuc8YYCj/70sZGeNnjGlVF3bWF4dFgBUVcBEOeS74aG/wCquO3+qbU+2C0B11aykKCmeIGZAAAB/5/+SwGpAQIADAAoALANL7AARViwBC8bsQQOPlmxCQGwCitYIdgb9FmwDRCwDNCwDC8wMQERBgYjIic3FjMyNREBqQLHs01BDis3eAEC/ta+zxHnDKwBH///ADf+owQxBI0BBgJMKAAAEACwAEVYsAIvG7ECFj5ZMDH//wBh/qAELwSMAQYCTvkAABAAsABFWLABLxuxARY+WTAx//8ANP7SBHwEjAEGAk0IAAATALAARViwCS8bsQkWPlmwDdAwMQD//wBUAAAENgSdAQYCS/wAABAAsABFWLARLxuxERY+WTAx//8ATv7SBEQEjAEGAk8SAAAQALAARViwBS8bsQUWPlkwMf//ADP/6wRlBJ8BBgJl5wAAEwCwAEVYsAsvG7ELFj5ZsBLQMDEA//8AX//sBEoFvwMGABr7AAATALAARViwAC8bsQAYPlmwF9AwMQD//wBW/r8EVQSgAQYCU/YAABMAsABFWLALLxuxCxY+WbAf0DAxAP//AF//7AQ3BcQDBgAcAAAAGQCwAEVYsBQvG7EUGD5ZsBrQsBQQsCbQMDEA//8A2QAAA1IEjAEGAkpKAAAQALAARViwBS8bsQUWPlkwMf///63+SwG3BDoCBgCcAAD///+t/ksBtwQ6AgYAnAAA//8AhgAAAacEOgIGAI0AAP////z+ZAGnBDoCJgCNAAAABgCk2wr//wCGAAABpwQ6AgYAjQAAAAEAY//rBDEEnAAhAGEAsABFWLAVLxuxFRY+WbAARViwEC8bsRAMPlmwAEVYsB8vG7EfDD5ZsQIBsAorWCHYG/RZshkfFRESObAZL7EIB7AKK1gh2Bv0WbAZELAK0LAVELENAbAKK1gh2Bv0WTAxJRYzMjY1NCYjIzU3JiMiFREhETY2MzIWFwMWFhUUBiMiJwIOQD9BSXBpU647TpL+5QHb1YTbZOKWptWviGn8MFFETkC12zve/SQC7NfZcnz+9Buig6zLOgAAAgBM/+sEfgSfAA4AHABIsgMdHhESObADELAZ0ACwAEVYsAsvG7ELFj5ZsABFWLADLxuxAww+WbALELESAbAKK1gh2Bv0WbADELEZAbAKK1gh2Bv0WTAxARAAIyIAETU0EjYzMhYSBTQmIyIGBxUUFjMyNjcEfv7e9ff+3IL1oqD0hf7fgnZ1gQKDd3OBAgI+/ur+wwE+ARcLuQELkI3+86WgtrKZP6K2r54AAAEAOAAAA/0FsAAGADMAsABFWLAFLxuxBRg+WbAARViwAS8bsQEMPlmwBRCxAwGwCitYIdgb9FmyAAMFERI5MDEBASEBITUhA/395v7eAhz9WwPFBQ768gTG6gAAAgBv/+wEUgYAAA8AGgBmshMbHBESObATELAM0ACwCS+wAEVYsAwvG7EMFD5ZsABFWLADLxuxAww+WbAARViwBi8bsQYMPlmyBQwGERI5sgoMBhESObAMELETAbAKK1gh2Bv0WbADELEYAbAKK1gh2Bv0WTAxARQCIyInByMRIRE2MzISESU0JiMiBxEWMzI2BFLvyrJrE/oBIWSjz+z+33Vuhjg6hmt2AhH3/tKNeQYA/dl1/tb++giZpGj+Q2mhAAABAET/7AQPBE4AGgBNshUbHBESOQCwAEVYsA4vG7EOFD5ZsABFWLAHLxuxBww+WbEAAbAKK1gh2Bv0WbIDBw4REjmyEg4HERI5sA4QsRUBsAorWCHYG/RZMDElMjY3IQYEIyIAETU0ADMyFhchJiYjIgYHFRACQlBpBAEQBv79v+n+5gEW68v5Bv7wBGhTaXEB1VlIqeEBKQEBFPUBL+fAVGmdmh/+xwACAET/7AQmBgAADwAaAGayGBscERI5sBgQsATQALAHL7AARViwBC8bsQQUPlmwAEVYsA0vG7ENDD5ZsABFWLAJLxuxCQw+WbIGBAkREjmyCwQJERI5sA0QsRMBsAorWCHYG/RZsAQQsRgBsAorWCHYG/RZMDETNDY2MzIXESERIycGIyICJRQWMzI3ESYjIgZEbsuDn2YBIfsUbazD9wEheGqBPTyAa3kCJqL9iXUCJ/oAeY0BM/KOrWoBvWasAAACAET+VgQmBE4AFwAiAIOyICMkERI5sCAQsAvQALAARViwAy8bsQMUPlmwAEVYsAYvG7EGFD5ZsABFWLAVLxuxFQw+WbAARViwCy8bsQsOPlmyBQYVERI5sg4LFRESObEQAbAKK1gh2Bv0WbITBhUREjmwFRCxGwGwCitYIdgb9FmwAxCxIAGwCitYIdgb9FkwMRM0EjMyFzczERQAIyInNxYzMjY1BiMiAiUUFjMyNxEmIyIGRPTHtWYR+/7u+beLLoJziIFkpML3ASF6aII8OYNqegIn+gEtgW38G/T+9UvPOYqecwEx9ZGrZgHFYqkAAAIAPP/sBGAETgAPABsARbIEHB0REjmwBBCwE9AAsABFWLAELxuxBBQ+WbAARViwDC8bsQwMPlmxEwGwCitYIdgb9FmwBBCxGQGwCitYIdgb9FkwMRM0NjYzMgARFRQGBiMiADUFFBYzMjY1NCYjIgY8hPKb7AEng/Gd7/7cASGDb26CgnBuggInnv2M/tD/AAyg+4sBMv0Jlairp42wrgACAG/+YARRBE4AEAAbAHCyGRwdERI5sBkQsA3QALAARViwDS8bsQ0UPlmwAEVYsAovG7EKFD5ZsABFWLAHLxuxBw4+WbAARViwBC8bsQQMPlmyBg0EERI5sgsNBBESObANELEUAbAKK1gh2Bv0WbAEELEZAbAKK1gh2Bv0WTAxARQGBiMiJxEhESEXNjMyEhcFNCYjIgcRFjMyNgRRbcmCpGX+3wEJDGmqye8C/t98aYM4OoNoewISnv2Lcv4CBdpsgP7X+AaTqWH+NWKrAAIARP5gBCYETgAPABoAbbIYGxwREjmwGBCwA9AAsABFWLADLxuxAxQ+WbAARViwBi8bsQYUPlmwAEVYsAgvG7EIDj5ZsABFWLAMLxuxDAw+WbIFAwwREjmyCgMMERI5sRMBsAorWCHYG/RZsAMQsRgBsAorWCHYG/RZMDETNBIzMhc3MxEhEQYjIgI1BRQWMzI3ESYjIgZE8susahT7/t5loMT3ASF7aIE7OoBqewIm+gEuhXH6JgH7bwEx/AiQrF8B0l6sAAIASP/sBB4ETgAWAB4AcbIPHyAREjmwDxCwF9AAsABFWLAILxuxCBQ+WbAARViwAC8bsQAMPlmyGwgAERI5sBsvso8bAV20HxsvGwJxsQwIsAorWCHYG/RZsAAQsRABsAorWCHYG/RZshMADBESObAIELEXAbAKK1gh2Bv0WTAxBSIANTU0NjYzMhIVFSEWFjMyNjcXBgYDIgYHITU0JgJz+P7NfuaV3/79TxGef0edOjdEy6BWbQ8Bk2MUASnwH6H/iv7u/YBzdycgyTA3A3h1axpiZAACAEL+VgQRBE4AGAAjAIOyISQlERI5sCEQsBHQALAARViwAy8bsQMUPlmwAEVYsAYvG7EGFD5ZsABFWLAWLxuxFgw+WbAARViwCy8bsQsOPlmyBQYWERI5sg4LFhESObEQAbAKK1gh2Bv0WbIUBhYREjmwFhCxHAGwCitYIdgb9FmwAxCxIQGwCitYIdgb9FkwMRM0EjMyFzczERQAIyInNxYzMjY1NQYjIgIlFBYzMjcRJiMiBkLjxbVmEfv+7PeyhS1/a4mBZqLA5gEiamSGODeFZmoCJ/8BKIFt/Bbz/vlGzzSIjBRzASz6maNvAbNroQD//wBmAAAC4AWyAAYAFb8AAAMAVv/tBN0EnQAdACYAMwBkALAARViwDS8bsQ0WPlmwAEVYsAAvG7EADD5ZsABFWLAbLxuxGww+WbIUDQAREjmyHAANERI5sAAQsR4BsAorWCHYG/RZsiEADRESObIqDQAREjmwDRCxMQmwCitYIdgb9FkwMQUiJjU0NzY3JiY1NDYzMhYVFAcHFzY1MxQHFyEnBicyNycHBhUUFgMUFhc3NjY1NCYjIgYCEsj0USxxUT/GnafGszbPNPeAyP7HO5i6W0fcLDpTHS4mKS4wPjE2NhOvi29VL0dTgEt6pKaIlnUjz1Rw25THO07mGNwdKjo2PQKOIUAmGxw2JSMyOgABAAcAAAOuBI0ADQBXALAARViwCy8bsQsWPlmwAEVYsAQvG7EEDD5Zsg0ECxESObANL7EAArAKK1gh2Bv0WbAB0LAEELEDAbAKK1gh2Bv0WbABELAG0LANELAM0LAJ0LAI0DAxAQcRIRUhEQc1NxEhETcCkPUCE/zLcnIBIvUCqEf+h+gCDiGmIQHZ/npHAAAC/9cAAAYSBI0ADwASAIiyBRMUERI5sAUQsBHQALAARViwCi8bsQoWPlmwAEVYsAQvG7EEDD5ZsABFWLAILxuxCAw+WbIPCgQREjmwDy+xAAGwCitYIdgb9FmwBBCxAgGwCitYIdgb9FmyEQoEERI5sBEvsQYBsAorWCHYG/RZsAoQsQwBsAorWCHYG/RZshIKBBESOTAxASETIRUhJyEHIQEhFSEXIQEzAwWo/kULAhr80An+nmj+yAJIA8X9+AgBxPw67hIB6f7+5+HhBI3o1P71AdoAAgBjAAAD5wSNAAwAFQBZshUWFxESObAVELAJ0ACwAEVYsAAvG7EAFj5ZsABFWLALLxuxCww+WbICAAsREjmwAi+yDwALERI5sA8vsQkBsAorWCHYG/RZsAIQsQ0BsAorWCHYG/RZMDETIRUzMgQVFAQHIxUhAREzMjY1NCYnYwEifd4BB/7924T+3gEigVpnaFUEjaTXrrLVAdwDAP7FU0pIVQEAAAMAQP/JBH4EvwAXACAAKQBqsgcqKxESObAHELAd0LAHELAm0ACwAEVYsBMvG7ETFj5ZsABFWLAHLxuxBww+WbIaEwcREjmyGxMHERI5sBMQsR0BsAorWCHYG/RZsiMTBxESObIkBxMREjmwBxCxJgGwCitYIdgb9FkwMQEWFxUUAgYjIicHIzcmJzU0EjYzMhc3MwEUFwEmIyIGFSE0JwEWMzI2NQPujASG+Z6iglGojo8DhvihpYBQqPzmGwF1PVZ8gQH6Gv6NO1d0hwP5mfc6q/76jkpxxpr9NqwBBo9Nb/1waEsCCDGypmRJ/fsvtKgAAgA2AAAE+QSNABMAFwCRsgUYGRESObAFELAU0ACwAEVYsAwvG7EMFj5ZsABFWLAQLxuxEBY+WbAARViwAi8bsQIMPlmwAEVYsAYvG7EGDD5ZshMMAhESObATL7YPEx8TLxMDXbEAB7AKK1gh2Bv0WbIVDAIREjmwFS+xBAGwCitYIdgb9FmwABCwCNCwExCwCtCwExCwDtCwABCwFtAwMQEjESERIREhESM1MzUhFSE1IRUzASE1IQT5Wv7g/jP+3lpaASIBzQEgWvy5Ac3+MwNR/K8Bxv46A1G3hYWFhf6nogAAAQBj/ksEcgSNABMAW7ICFBUREjkAsABFWLAMLxuxDBY+WbAARViwDy8bsQ8WPlmwAEVYsAAvG7EADj5ZsABFWLAKLxuxCgw+WbAAELEFAbAKK1gh2Bv0WbIJDAAREjmyDgwAERI5MDEBIic3FjMyNTUBESERIQERIREGBgL2T0EOLTd4/jX+3gEiAcwBIQHH/ksR5wysHgLV/SoEjf0pAtf7T8DR//8AbgH7AqEC5AIGABEAAAAC/+wAAAT5BbAADwAdAF8AsABFWLAFLxuxBRg+WbAARViwAC8bsQAMPlmyBAAFERI5sAQvsp8EAV2xAQewCitYIdgb9FmwEdCwABCxEgGwCitYIdgb9FmwBRCxGwGwCitYIdgb9FmwBBCwHNAwMTMRIzUzESEyBBIVFRQCBAcTIxEzMjY1NTQmIyMRM6C0tAHAwAEvqqf+0L9E25GyurixlNsCgrcCd63+wctDy/7ErgECgv5v69pE3uX+fAAAAv/sAAAE+QWwAA8AHQBkALAARViwBS8bsQUYPlmwAEVYsAAvG7EADD5ZsgQABRESObAEL7JvBAFxsp8EAV2xAQewCitYIdgb9FmwEdCwABCxEgGwCitYIdgb9FmwBRCxGwGwCitYIdgb9FmwBBCwHNAwMTMRIzUzESEyBBIVFRQCBAcTIxEzMjY1NTQmIyMRM6C0tAHAwAEvqqf+0L9E25GyurixlNsCgrcCd63+wctDy/7ErgECgv5v69pE3uX+fAAB/8sAAAQtBgAAGAB2sgwZGhESOQCwFS+wAEVYsAQvG7EEFD5ZsABFWLAHLxuxBww+WbAARViwDy8bsQ8MPlmyLxUBXbIPFQFdshgPFRESObAYL7EAB7AKK1gh2Bv0WbICBAcREjmwBBCxDAGwCitYIdgb9FmwABCwEdCwGBCwE9AwMQEjFTYzIBMRIRE0JiMiBxEhESM1MzUhFTMCht9zrgFgBf7fUF1/Of7fu7sBId8EwPyK/mf9SwKtXVli/P8EwLeJiQABACgAAATKBbAADwBOALAARViwCi8bsQoYPlmwAEVYsAIvG7ECDD5Zsg8KAhESObAPL7EAB7AKK1gh2Bv0WbAE0LAPELAG0LAKELEIAbAKK1gh2Bv0WbAM0DAxASMRIREjNTMRITUhFSERMwPEuP7U19f+SASi/kK4Au39EwLttwEZ8/P+5wAAAf/i/+wCnQVEABwAg7IAHR4REjkAsABFWLABLxuxARQ+WbAARViwGi8bsRoUPlmwAEVYsBEvG7ERDD5ZsAEQsADQsAAvsAEQsQMJsAorWCHYG/RZsgYaERESObAGL7EHB7AKK1gh2Bv0WbARELEMAbAKK1gh2Bv0WbAHELAU0LAGELAW0LADELAY0LAZ0DAxAREzFSMVMxUjFRQWMzI3FQYjIAM1IzUzNSM1MxEBybm51NQuQTAlVVr+0QfGxp6eBUT+9tSbt8o8NAfbGgEx97eb1AEK//8ABwAABVwHNgImACUAAAEHAEQBDwE2ABMAsABFWLAELxuxBBg+WbAM3DAxAP//AAcAAAVcBzYCJgAlAAABBwB1AcQBNgAJALAEL7AN3DAxAP//AAcAAAVcBzYCJgAlAAABBwCeAL0BNgATALAARViwBC8bsQQYPlmwD9wwMQD//wAHAAAFXAczAiYAJQAAAQcApQDGATQACQCwBC+wFtwwMQD//wAHAAAFXAcKAiYAJQAAAAcAagDYATb//wAHAAAFXAePAiYAJQAAAQcAowFfAZUADACwBC+wFNywF9AwMf//AAcAAAVcB84CJgAlAAABBwInAVoBDQASALIvDQFdsi8YAV2yLx4BXTAx//8AVv4xBPsFxAImACcAAAAHAHkBxP////8AggAABFIHOQImACkAAAEHAEQA1gE5ABMAsABFWLAGLxuxBhg+WbAN3DAxAP//AIIAAARSBzkCJgApAAABBwB1AYsBOQATALAARViwBi8bsQYYPlmwDtwwMQD//wCCAAAEUgc5AiYAKQAAAQcAngCEATkAEwCwAEVYsAYvG7EGGD5ZsBDcMDEA//8AggAABFIHDQImACkAAAAHAGoAnwE5////ugAAAcEHOQImAC0AAAEHAET/hgE5ABMAsABFWLACLxuxAhg+WbAF3DAxAP//AJUAAAKfBzkCJgAtAAABBwB1ADoBOQATALAARViwAy8bsQMYPlmwBtwwMQD///+vAAACqwc5AiYALQAAAQcAnv80ATkAEwCwAEVYsAIvG7ECGD5ZsAjcMDEA////rQAAAqkHDQImAC0AAAAHAGr/TwE5//8AggAABSIHMwImADIAAAEHAKUA6AE0AAkAsAUvsBXcMDEA//8AVv/sBS4HNgImADMAAAEHAEQBHQE2ABMAsABFWLAMLxuxDBg+WbAg3DAxAP//AFb/7AUuBzYCJgAzAAABBwB1AdIBNgATALAARViwDS8bsQ0YPlmwIdwwMQD//wBW/+wFLgc2AiYAMwAAAQcAngDLATYAEwCwAEVYsAwvG7EMGD5ZsCPcMDEA//8AVv/sBS4HMwImADMAAAEHAKUA1AE0ABMAsABFWLAMLxuxDBg+WbAi3DAxAP//AFb/7AUuBwoCJgAzAAAABwBqAOYBNv//AHT/7ATQBzYCJgA5AAABBwBEAPkBNgATALAARViwCS8bsQkYPlmwEtwwMQD//wB0/+wE0Ac2AiYAOQAAAQcAdQGuATYACQCwAC+wE9wwMQD//wB0/+wE0Ac2AiYAOQAAAQcAngCnATYAEwCwAEVYsAkvG7EJGD5ZsBXcMDEA//8AdP/sBNAHCgImADkAAAAHAGoAwgE2//8AAgAABO8HNgImAD0AAAEHAHUBiwE2ABMAsABFWLABLxuxARg+WbAL3DAxAP//AET/7AQGBgACJgBFAAABBwBEAIIAAAAJALAXL7Aq3DAxAP//AET/7AQGBgACJgBFAAABBwB1ATcAAAAJALAXL7As3DAxAP//AET/7AQGBgACJgBFAAABBgCeMAAAEwCwAEVYsBcvG7EXFD5ZsC7cMDEA//8ARP/sBAYF/gImAEUAAAEGAKU5/wAJALAXL7A13DAxAP//AET/7AQGBdQCJgBFAAAABgBqSwD//wBE/+wEBgZZAiYARQAAAQcAowDSAF8ADACwFy+wM9ywNtAwMf//AET/7AQGBpkCJgBFAAABBwInAM3/2AA/ALIALAFxsjAsAV2ycCwBXbJQLAFdsnA3AV2yADcBcbJQNwFdsjA3AV2yAD0BcbIwPQFdsnA9AV2yUD0BXTAxAP//AEL+MQP2BE4CJgBHAAAABwB5AUH/////AEj/7AQeBgACJgBJAAABBgBEewAACQCwCC+wHtwwMQD//wBI/+wEHgYAAiYASQAAAQcAdQEwAAAACQCwCC+wINwwMQD//wBI/+wEHgYAAiYASQAAAQYAnikAABMAsABFWLAILxuxCBQ+WbAi3DAxAP//AEj/7AQeBdQCJgBJAAAABgBqRAD///+oAAABqQXxAiYAjQAAAQcARP90//EAEwCwAEVYsAIvG7ECFD5ZsAXcMDEA//8AhgAAAo0F8QImAI0AAAEGAHUo8QATALAARViwAy8bsQMUPlmwBtwwMQD///+dAAACmQXxAiYAjQAAAQcAnv8i//EAEwCwAEVYsAIvG7ECFD5ZsAjcMDEA////mwAAApcFxQImAI0AAAAHAGr/Pf/x//8AaQAABA8F/gImAFIAAAEGAKVR/wAJALADL7Ad3DAxAP//AEL/7ARDBgACJgBTAAABBwBEAJsAAAAJALAEL7Aa3DAxAP//AEL/7ARDBgACJgBTAAABBwB1AVAAAAAJALAEL7Ac3DAxAP//AEL/7ARDBgACJgBTAAABBgCeSQAAEwCwAEVYsAQvG7EEFD5ZsB7cMDEA//8AQv/sBEMF/gImAFMAAAEGAKVS/wAJALAEL7Al3DAxAP//AEL/7ARDBdQCJgBTAAAABgBqZAD//wBo/+wEDwYAAiYAWQAAAQcARACXAAAAEwCwAEVYsAcvG7EHFD5ZsBLcMDEA//8AaP/sBA8GAAImAFkAAAEHAHUBTAAAABMAsABFWLANLxuxDRQ+WbAT3DAxAP//AGj/7AQPBgACJgBZAAABBgCeRQAAEwCwAEVYsAcvG7EHFD5ZsBXcMDEA//8AaP/sBA8F1AImAFkAAAAGAGpgAP//AAP+SwQBBgACJgBdAAABBwB1ARgAAAAJALABL7AT3DAxAP//AAP+SwQBBdQCJgBdAAAABgBqLAD//wAHAAAFXAbiAiYAJQAAAQcAcAC1ATQAEwCwAEVYsAQvG7EEGD5ZsAzcMDEA//8ARP/sBAYFrQImAEUAAAEGAHAo/wAJALAXL7Aq3DAxAP//AAcAAAVcBywCJgAlAAABBwChAPEBNgATALAARViwBC8bsQQYPlmwDdwwMQD//wBE/+wEBgX2AiYARQAAAQYAoWQAABMAsABFWLAXLxuxFxQ+WbAt3DAxAAACAAf+WgVcBbAAFgAZAHeyGRobERI5sBkQsADQALAARViwAC8bsQAYPlmwAEVYsAwvG7EMDj5ZsABFWLABLxuxAQw+WbAARViwFC8bsRQMPlmwDBCwB7AKK1jYG9xZsAEQsBHQsBEvshgAARESObAYL7ESAbAKK1gh2Bv0WbIZAAEREjkwMQEBIwYGFRQzMjcXBiMiJjU0NwMhAyEBAyEDAzsCIVRKUEIhLx1JXGR/hGH98mT+wQIeKgFstwWw+lAqUTVBFJ0sb2KHWQEh/tQFsPxvAiEAAgBE/loEBgROAC0AOACmshc5OhESObAXELAv0ACwAEVYsBcvG7EXFD5ZsABFWLApLxuxKQ4+WbAARViwBC8bsQQMPlmwAEVYsB4vG7EeDD5ZsADQsAAvsgIXHhESObILFx4REjmwCy+yjwsBXbAXELEPAbAKK1gh2Bv0WbISCxcREjl8sBIvGLApELAksAorWNgb3FmwBBCxLgGwCitYIdgb9FmwCxCxMgiwCitYIdgb9FkwMSUmJwYjIiY1NDY3MzU0JiMiBhUhNDY2MzIWFREWFxUjBgYVFDMyNxcGIyImNTQDMjY3NSMiBwcUFgLfEQlpqJ/R//GFTVNJU/7fdNSEyOsBKjBKUEIhLx1JXGR/cEBsGmzZDgFMBSkzdbiMrLgBPktaRj1eoFvJtv4rmk8RKlE1QRSdLG9igwEbOTC6lhE2Rv//AFb/7AT7Bz4CJgAnAAABBwB1AcABPgATALAARViwCy8bsQsYPlmwH9wwMQD//wBC/+wD9gYAAiYARwAAAQcAdQEmAAAACQCwDy+wH9wwMQD//wBW/+wE+wc+AiYAJwAAAQcAngC5AT4AEwCwAEVYsAsvG7ELGD5ZsB/cMDEA//8AQv/sA/YGAAImAEcAAAEGAJ4fAAATALAARViwDy8bsQ8UPlmwH9wwMQD//wBW/+wE+wc2AiYAJwAAAQcAogGlAU8AEwCwAEVYsAsvG7ELGD5ZsCLcMDEA//8AQv/sA/YF+AImAEcAAAEHAKIBCwARAAkAsA8vsCLcMDEA//8AVv/sBPsHPwImACcAAAEHAJ8A0QE+AAkAsAsvsCHcMDEA//8AQv/sA/YGAQImAEcAAAEGAJ83AAAJALAPL7Ah3DAxAP//AIIAAATbBzoCJgAoAAABBwCfADABOQAJALABL7Aa3DAxAP//AEL/7AV/BgEAJgBIAAABBwG6BCsE7gAGALAdLzAx//8AggAABFIG5QImACkAAAEHAHAAfAE3ABMAsABFWLAGLxuxBhg+WbAN3DAxAP//AEj/7AQeBa0CJgBJAAABBgBwIf8ACQCwCC+wHtwwMQD//wCCAAAEUgcvAiYAKQAAAQcAoQC4ATkAEwCwAEVYsAYvG7EGGD5ZsA/cMDEA//8ASP/sBB4F9gImAEkAAAEGAKFdAAATALAARViwCC8bsQgUPlmwIdwwMQD//wCCAAAEUgcxAiYAKQAAAQcAogFwAUoACQCwBi+wEdwwMQD//wBI/+wEHgX4AiYASQAAAQcAogEVABEACQCwCC+wI9wwMQAAAQCC/loEUgWwABsAibIRHB0REjkAsABFWLAWLxuxFhg+WbAARViwDy8bsQ8OPlmwAEVYsAQvG7EEDD5ZsABFWLAULxuxFAw+WbIbFgQREjmwGy+0OhtKGwJdsQABsAorWCHYG/RZsBQQsQIBsAorWCHYG/RZsAPQsA8QsAqwCitY2BvcWbAWELEYAbAKK1gh2Bv0WTAxASERIRUjBgYVFDMyNxcGIyImNTQ3IREhFSERIQPu/cACpJhKUEIhLx1JXGR/dP3HA879XgJAAnf+evEqUTVBFJ0sb2J/VgWw8/6lAAIASP55BB4ETgAkACwAirISLS4REjmwEhCwJdAAsA0vsABFWLAaLxuxGhQ+WbAARViwEi8bsRIMPlmxIgGwCitYIdgb9FmyAhIiERI5sA0QsAiwCitY2BvcWbIpGhIREjmwKS+0HykvKQJxsl8pAXGyjykBXbEeCLAKK1gh2Bv0WbIkEh4REjmwGhCxJQGwCitYIdgb9FkwMSUGBzMGBhUUMzI3FwYjIiY1NDcmADU1NBI2MzISERUhFhYzMjcBIgYHITUmJgQHPnMBSlBCIS8dSVxkfz/W/vt+55Te//1PDo1sp17+x1ZrDwGSAmSvWzUqUTVBFJ0sb2JhRBMBH98fowEBi/7o/v92aoB5AhZ0bBdgaQD//wCCAAAEUgc6AiYAKQAAAQcAnwCcATkACQCwBi+wENwwMQD//wBI/+wEHgYBAiYASQAAAQYAn0EAAAkAsAgvsCLcMDEA//8AXv/sBQIHPgImACsAAAEHAJ4AwAE+ABMAsABFWLAMLxuxDBg+WbAj3DAxAP//AEX+VgQiBgACJgBLAAABBgCeMwAAEwCwAEVYsAMvG7EDFD5ZsCvcMDEA//8AXv/sBQIHNAImACsAAAEHAKEA9AE+ABMAsABFWLAMLxuxDBg+WbAk3DAxAP//AEX+VgQiBfYCJgBLAAABBgChZwAAEwCwAEVYsAMvG7EDFD5ZsCrcMDEA//8AXv/sBQIHNgImACsAAAEHAKIBrAFPAAkAsAwvsCbcMDEA//8ARf5WBCIF+AImAEsAAAEHAKIBHwARAAkAsAMvsCzcMDEA//8AXv36BQIFxAImACsAAAAHAboB7/6P//8ARf5WBCIGuAImAEsAAAEHAjQBMACiAAkAsAMvsCvcMDEA//8AggAABSMHOQImACwAAAEHAJ4A2wE5ABMAsABFWLAHLxuxBxg+WbAQ3DAxAP//AGgAAAQPB3wCJgBMAAABBwCeABUBfAAJALAQL7AV3DAxAP///7IAAAKjBzYCJgAtAAABBwCl/z0BNwATALAARViwAy8bsQMYPlmwB9wwMQD///+gAAACkQXuAiYAjQAAAQcApf8r/+8AEwCwAEVYsAMvG7EDFD5ZsAfcMDEA////1AAAAoYG5QImAC0AAAEHAHD/LAE3ABMAsABFWLACLxuxAhg+WbAF3DAxAP///8IAAAJ0BZ0CJgCNAAABBwBw/xr/7wATALAARViwAi8bsQIUPlmwBdwwMQD////SAAAChgcvAiYALQAAAQcAof9oATkAEwCwAEVYsAIvG7ECGD5ZsAfcMDEA////wAAAAnQF5wImAI0AAAEHAKH/Vv/xABMAsABFWLACLxuxAhQ+WbAH3DAxAP//ABf+XAHBBbACJgAtAAAABgCk9gL//wAD/loBsQXnAiYATQAAAAYApOIA//8AlQAAAcEHMQImAC0AAAEHAKIAHwFKAAkAsAIvsAncMDEA//8Alf/sBk4FsAAmAC0AAAAHAC4CVQAA//8Abf5LA8sF5wAmAE0AAAAHAE4CHwAA//8AKP/sBNYHNgImAC4AAAEHAJ4BXwE2ABMAsABFWLABLxuxARg+WbAT3DAxAP///5f+SwKTBeYCJgCcAAABBwCe/xz/5gATALAARViwDC8bsQwUPlmwEdwwMQD//wCC/joFJQWwAiYALwAAAAcBugGk/s///wBv/iQEWgYAAiYATwAAAAcBugFL/rn//wCCAAAEKwc2AiYAMAAAAQcAdQAuATYAEwCwAEVYsAUvG7EFGD5ZsAjcMDEA//8AfgAAAoQHiAImAFAAAAEHAHUAHwGIABMAsABFWLADLxuxAxo+WbAG3DAxAP//AIL+BgQrBbACJgAwAAAABwG6AXH+m///AFv+BgGgBgACJgBQAAAABwG6ACf+m///AIIAAAQrBbACJgAwAAABBwG6AjgEnQAQALAARViwCi8bsQoYPlkwMf//AH4AAAMPBgEAJgBQAAAABwG6AbsE7v//AIIAAAQrBbACJgAwAAAABwCiAdr93///AH4AAAMpBgAAJgBQAAAABwCiAYv9p///AIIAAAUiBzYCJgAyAAABBwB1AeYBNgATALAARViwCC8bsQgYPlmwDNwwMQD//wBpAAAEDwYAAiYAUgAAAQcAdQFPAAAACQCwAy+wFNwwMQD//wCC/f4FIgWwAiYAMgAAAAcBugHs/pP//wBp/gYEDwROAiYAUgAAAAcBugFU/pv//wCCAAAFIgc3AiYAMgAAAQcAnwD3ATYAEwCwAEVYsAYvG7EGGD5ZsA/cMDEA//8AaQAABA8GAQImAFIAAAEGAJ9gAAATALAARViwAC8bsQAUPlmwF9wwMQD///+SAAAEDwYAAiYAUgAAAQcBuv9eBO0ACQCwAy+wEtwwMQD//wBW/+wFLgbiAiYAMwAAAQcAcADDATQAEwCwAEVYsAwvG7EMGD5ZsCDcMDEA//8AQv/sBEMFrQImAFMAAAEGAHBB/wAJALAEL7Aa3DAxAP//AFb/7AUuBywCJgAzAAABBwChAP8BNgATALAARViwDC8bsQwYPlmwItwwMQD//wBC/+wEQwX2AiYAUwAAAQYAoX0AABMAsABFWLAELxuxBBQ+WbAc3DAxAP//AFb/7AUuBzUCJgAzAAABBwCmAVgBNgAWALAARViwDS8bsQ0YPlmwIdywJdAwMf//AEL/7ARTBf8CJgBTAAABBwCmANYAAAAMALAEL7Ac3LAe0DAx//8AggAABPAHNgImADYAAAEHAHUBZgE2ABMAsABFWLAELxuxBBg+WbAa3DAxAP//AG8AAAMPBgACJgBWAAABBwB1AKoAAAATALAARViwCy8bsQsUPlmwENwwMQD//wCC/gYE8AWwAiYANgAAAAcBugF8/pv//wBQ/gYC0wROAiYAVgAAAAcBugAc/pv//wCCAAAE8Ac3AiYANgAAAQcAnwB3ATYAEwCwAEVYsAQvG7EEGD5ZsB3cMDEA//8AEQAAAyQGAQImAFYAAAEGAJ+8AAATALAARViwCC8bsQgUPlmwEtwwMQD//wBF/+wEogc2AiYANwAAAQcAdQGYATYACQCwCi+wKtwwMQD//wA4/+wD0gYAAiYAVwAAAQcAdQEhAAAACQCwCC+wKNwwMQD//wBF/+wEogc2AiYANwAAAQcAngCRATYAEwCwAEVYsAovG7EKGD5ZsCrcMDEA//8AOP/sA9IGAAImAFcAAAEGAJ4aAAATALAARViwCC8bsQgUPlmwKNwwMQD//wBF/jIEogXEAiYANwAAAAcAeQGgAAD//wA4/ikD0gROAiYAVwAAAAcAeQEo//f//wBF/fwEogXEAiYANwAAAAcBugGh/pH//wA4/fID0gROAiYAVwAAAAcBugEp/of//wBF/+wEogc3AiYANwAAAQcAnwCpATYAEwCwAEVYsAovG7EKGD5ZsCzcMDEA//8AOP/sA9IGAQImAFcAAAEGAJ8yAAATALAARViwCC8bsQgUPlmwKtwwMQD//wAo/gMEygWwAiYAOAAAAQcBugGM/pgACACyUA0BXTAx//8ACv38Ao0FRAImAFgAAAAHAboAyf6R//8AKP45BMoFsAImADgAAAAHAHkBiwAH//8ACv4yAqwFRAImAFgAAAAHAHkAyAAA//8AKAAABMoHNwImADgAAAEHAJ8AlQE2ABMAsABFWLAGLxuxBhg+WbAN3DAxAP//AAr/7ANRBoMAJgBYAAAABwG6Af0FcP//AHT/7ATQBzMCJgA5AAABBwClALABNAAJALAAL7Ac3DAxAP//AGj/7AQPBf4CJgBZAAABBgClTv8AEwCwAEVYsA0vG7ENFD5ZsBTcMDEA//8AdP/sBNAG4gImADkAAAEHAHAAnwE0AAkAsAAvsBHcMDEA//8AaP/sBA8FrQImAFkAAAEGAHA9/wATALAARViwBy8bsQcUPlmwEtwwMQD//wB0/+wE0AcsAiYAOQAAAQcAoQDbATYAEwCwAEVYsAkvG7EJGD5ZsBTcMDEA//8AaP/sBA8F9gImAFkAAAEGAKF5AAATALAARViwBy8bsQcUPlmwFNwwMQD//wB0/+wE0AePAiYAOQAAAQcAowFJAZUADACwAC+wGtywHdAwMf//AGj/7AQPBlkCJgBZAAABBwCjAOcAXwAMALAGL7Aa3LAd0DAx//8AdP/sBNAHNQImADkAAAEHAKYBNAE2AAwAsAAvsBPcsBXQMDH//wBo/+wETwX/AiYAWQAAAQcApgDSAAAAFgCwAEVYsA0vG7ENFD5ZsBPcsBfQMDEAAQB0/p0E0AWwAB8AV7IcICEREjkAsA4vsABFWLAALxuxABg+WbAARViwFy8bsRcYPlmwAEVYsBMvG7ETDD5ZsgQTABESObAOELAJsAorWNgb3FmwExCxHAGwCitYIdgb9FkwMQERFAYHBgYVFDMyNxcGIyImNTQ3IAA1ESERFBYzMhMRBNCMeDg6QiEvHUlcZH8i/v3+1AEsiXn9BAWw/D+l5DsjRy5BFJ0sb2JINgET9AO9/D+PgwEKA8kAAAEAaP5aBA8EOgAfAHeyGiAhERI5ALAARViwFi8bsRYUPlmwAEVYsB0vG7EdFD5ZsABFWLAKLxuxCg4+WbAARViwAC8bsQAMPlmwAEVYsBIvG7ESDD5ZsAoQsAWwCitY2BvcWbAAELAP0LAPL7IQHQAREjmwEhCxGgGwCitYIdgb9FkwMSEGBhUUMzI3FwYjIiY1NDcnBiMiJicRIREUMzI3ESERA/BKUEIhLx1JXGR/gQdrva63AgEhmpM3ASIqUTVBFJ0sb2KGWGWCyMECxf1FqWYC/vvG//8AIwAABt8HNgImADsAAAEHAJ4BkAE2ABMAsABFWLAJLxuxCRg+WbAR3DAxAP//ABwAAAXBBgACJgBbAAABBwCeAPYAAAATALAARViwDC8bsQwUPlmwD9wwMQD//wACAAAE7wc2AiYAPQAAAQcAngCEATYAEwCwAEVYsAEvG7EBGD5ZsAvcMDEA//8AA/5LBAEGAAImAF0AAAEGAJ4RAAATALAARViwAS8bsQEUPlmwE9wwMQD//wACAAAE7wcKAiYAPQAAAAcAagCfATb//wBJAAAEngc2AiYAPgAAAQcAdQGFATYAEwCwAEVYsAcvG7EHGD5ZsAzcMDEA//8ASgAAA8wGAAImAF4AAAEHAHUBGgAAABMAsABFWLAHLxuxBxQ+WbAM3DAxAP//AEkAAASeBy4CJgA+AAABBwCiAWoBRwATALAARViwBy8bsQcYPlmwD9wwMQD//wBKAAADzAX4AiYAXgAAAQcAogD/ABEAEwCwAEVYsAcvG7EHFD5ZsA/cMDEA//8ASQAABJ4HNwImAD4AAAEHAJ8AlgE2ABMAsABFWLAHLxuxBxg+WbAP3DAxAP//AEoAAAPMBgECJgBeAAABBgCfKwAAEwCwAEVYsAcvG7EHFD5ZsA/cMDEA//8AAgAAB0kHQgImAIEAAAEHAHUCtgFCABMAsABFWLAGLxuxBhg+WbAV3DAxAP//AEL/7AaNBgECJgCGAAABBwB1Am0AAQAJALAXL7A/3DAxAP//AF3/oQU1B4ACJgCDAAABBwB1AdsBgAATALAARViwEC8bsRAYPlmwLNwwMQD//wBC/3IEQwX8AiYAiQAAAQcAdQEr//wAEwCwAEVYsAQvG7EEFD5ZsCfcMDEA////kwAABDQEjQImAjAAAAEHAib/Bv9iACwAtL8YzxgCXbKvGQFxsm8ZAXK0HxkvGQJdst8ZAXGyjxkBcbTfGe8ZAl0wMf///5MAAAQ0BI0CJgIwAAABBwIm/wb/YgAsALS/GM8YAl2yrxkBcbJvGQFytB8ZLxkCXbLfGQFxso8ZAXG03xnvGQJdMDH//wAgAAAELwSNAiYB2AAAAQYCJiKXAAgAsgAKAV0wMf////8AAAStBh4CJgIzAAABBwBEALMAHgATALAARViwBC8bsQQWPlmwDNwwMQD/////AAAErQYeAiYCMwAAAQcAdQFoAB4AEwCwAEVYsAUvG7EFFj5ZsA3cMDEA/////wAABK0GHgImAjMAAAEGAJ5hHgATALAARViwBC8bsQQWPlmwD9wwMQD/////AAAErQYbAiYCMwAAAQYApWocABMAsABFWLAFLxuxBRY+WbAO3DAxAP////8AAAStBfICJgIzAAAABgBqfB7/////AAAErQZ3AiYCMwAAAQcAowEDAH0ADACwBC+wFNywF9AwMf////8AAAStBrcCJgIzAAAABwInAP7/9v//AED+NARSBJ0CJgIxAAAABwB5AWYAAv//AGMAAAO8Bh4CJgIoAAABBwBEAIQAHgATALAARViwBi8bsQYWPlmwDdwwMQD//wBjAAADvAYeAiYCKAAAAQcAdQE5AB4AEwCwAEVYsAcvG7EHFj5ZsA7cMDEA//8AYwAAA7wGHgImAigAAAEGAJ4yHgAJALAGL7AQ3DAxAP//AGMAAAO8BfICJgIoAAAABgBqTR7///+YAAABmQYeAiYB4wAAAQcARP9kAB4AEwCwAEVYsAIvG7ECFj5ZsAXcMDEA//8AdgAAAn0GHgImAeMAAAEGAHUYHgATALAARViwAy8bsQMWPlmwBtwwMQD///+NAAACiQYeAiYB4wAAAQcAnv8SAB4AEwCwAEVYsAIvG7ECFj5ZsAjcMDEA////iwAAAocF8gImAeMAAAAHAGr/LQAe//8AYwAABHIGGwImAd4AAAEHAKUAggAcABMAsABFWLAGLxuxBhY+WbAN3DAxAP//AED/8AR+Bh4CJgHdAAABBwBEALgAHgATALAARViwDS8bsQ0WPlmwIdwwMQD//wBA//AEfgYeAiYB3QAAAQcAdQFtAB4ACQCwDS+wItwwMQD//wBA//AEfgYeAiYB3QAAAQYAnmYeABMAsABFWLANLxuxDRY+WbAk3DAxAP//AED/8AR+BhsCJgHdAAABBgClbxwACQCwDS+wK9wwMQD//wBA//AEfgXyAiYB3QAAAAcAagCBAB7//wBd//AEMAYeAiYB1wAAAQcARACdAB4AEwCwAEVYsAkvG7EJFj5ZsBLcMDEA//8AXf/wBDAGHgImAdcAAAEHAHUBUgAeABMAsABFWLAQLxuxEBY+WbAT3DAxAP//AF3/8AQwBh4CJgHXAAABBgCeSx4AEwCwAEVYsAkvG7EJFj5ZsBXcMDEA//8AXf/wBDAF8gImAdcAAAAGAGpmHv////8AAARPBh4CJgHTAAABBwB1ASsAHgATALAARViwAS8bsQEWPlmwC9wwMQD/////AAAErQXKAiYCMwAAAQYAcFkcABMAsABFWLAELxuxBBY+WbAM3DAxAP////8AAAStBhQCJgIzAAABBwChAJUAHgATALAARViwBC8bsQQWPlmwDtwwMQAAAv///loErQSNABYAGQB3shkaGxESObAZELAA0ACwAEVYsAAvG7EAFj5ZsABFWLAMLxuxDA4+WbAARViwAS8bsQEMPlmwAEVYsBQvG7EUDD5ZsAwQsAewCitY2BvcWbABELAR0LARL7IXFAAREjmwFy+xEgmwCitYIdgb9FmyGQAUERI5MDEBASMGBhUUMzI3FwYjIiY1NDcnIQchAQMhAwLcAdFASlBCIS8dSVxkf4lN/j1S/t4BzQsBJZMEjftzKlE1QRSdLG9iilnQ3gSN/SUBiv//AED/8ARSBh4CJgIxAAABBwB1AWMAHgAJALAKL7Ac3DAxAP//AED/8ARSBh4CJgIxAAABBgCeXB4AEwCwAEVYsAovG7EKFj5ZsB7cMDEA//8AQP/wBFIGFgImAjEAAAEHAKIBSAAvAAkAsAovsB/cMDEA//8AQP/wBFIGHwImAjEAAAEGAJ90HgAJALAKL7Ae3DAxAP//ABYAAAQ0Bh8CJgIwAAABBgCfwR4ACQCwAS+wGtwwMQD//wBjAAADvAXKAiYCKAAAAQYAcCocABMAsABFWLAGLxuxBhY+WbAN3DAxAP//AGMAAAO8BhQCJgIoAAABBgChZh4AEwCwAEVYsAYvG7EGFj5ZsA/cMDEA//8AYwAAA7wGFgImAigAAAEHAKIBHgAvAAkAsAYvsBHcMDEAAAEAY/5aA7wEjQAbAIKyERwdERI5ALAARViwFi8bsRYWPlmwAEVYsA8vG7EPDj5ZsABFWLAELxuxBAw+WbAARViwFC8bsRQMPlmyGxYEERI5sBsvsQABsAorWCHYG/RZsBQQsQIBsAorWCHYG/RZsAPQsA8QsAqwCitY2BvcWbAWELEYAbAKK1gh2Bv0WTAxASEVIRUjBgYVFDMyNxcGIyImNTQ3IREhFSEVIQNm/h8CNoFKUEIhLx1JXGR/dP4oA1n9yQHhAeX96CpRNUEUnSxvYn9WBI3q1QD//wBjAAADvAYfAiYCKAAAAQYAn0oeAAkAsAYvsBDcMDEA//8ASf/wBFsGHgImAeUAAAEGAJ5qHgATALAARViwCi8bsQoWPlmwI9wwMQD//wBJ//AEWwYUAiYB5QAAAQcAoQCeAB4AEwCwAEVYsAovG7EKFj5ZsCLcMDEA//8ASf/wBFsGFgImAeUAAAEHAKIBVgAvAAkAsAovsCTcMDEA//8ASf3+BFsEnQImAeUAAAEHAboBjf6TAAgAslAjAV0wMf//AGMAAARzBh4CJgHkAAABBgCebB4AEwCwAEVYsAcvG7EHFj5ZsBDcMDEA////kAAAAoEGGwImAeMAAAEHAKX/GwAcABMAsABFWLADLxuxAxY+WbAH3DAxAP///7IAAAJkBcoCJgHjAAABBwBw/woAHAATALAARViwAi8bsQIWPlmwBdwwMQD///+wAAACZAYUAiYB4wAAAQcAof9GAB4AEwCwAEVYsAIvG7ECFj5ZsAfcMDEA//8AJf5aAa0EjQImAeMAAAAGAKQEAP//AHQAAAGcBhYCJgHjAAABBgCi/i8ACQCwAi+wCdwwMQD//wAg//AEYgYeAiYB4gAAAQcAngDrAB4AEwCwAEVYsAAvG7EAFj5ZsBLcMDEA//8AY/4EBHUEjQImAeEAAAEHAboBE/6ZAAgAslARAV0wMf//AGMAAAOYBh4CJgHgAAABBgB1Dh4AEwCwAEVYsAUvG7EFFj5ZsAjcMDEA//8AY/4EA5gEjQImAeAAAAEHAboBFP6ZAAgAslAKAV0wMf//AGMAAAOYBJACJgHgAAABBwG6AaQDfQAQALAARViwCi8bsQoWPlkwMf//AGMAAAOYBI0CJgHgAAABBwCiAYD9UQAIALJfBgFdMDH//wBjAAAEcgYeAiYB3gAAAQcAdQGAAB4AEwCwAEVYsAgvG7EIFj5ZsAzcMDEA//8AY/36BHIEjQImAd4AAAAHAboBiP6P//8AYwAABHIGHwImAd4AAAEHAJ8AkQAeAAkAsAUvsA7cMDEA//8AQP/wBH4FygImAd0AAAEGAHBeHAAJALANL7Ag3DAxAP//AED/8AR+BhQCJgHdAAABBwChAJoAHgATALAARViwDS8bsQ0WPlmwI9wwMQD//wBA//AEfgYdAiYB3QAAAQcApgDzAB4ADACwDS+wItywJNAwMf//AGMAAARMBh4CJgHaAAABBwB1AQ0AHgAJALAEL7AY3DAxAP//AGP+BARMBI0CJgHaAAABBwG6ASb+mQAIALJQGgFdMDH//wBjAAAETAYfAiYB2gAAAQYAnx4eAAkAsAQvsBrcMDEA//8AOv/wBAEGHgImAdkAAAEHAHUBSgAeAAkAsAovsCncMDEA//8AOv/wBAEGHgImAdkAAAEGAJ5DHgATALAARViwCi8bsQoWPlmwK9wwMQD//wA6/jIEAQSdAiYB2QAAAAcAeQFQAAD//wA6//AEAQYfAiYB2QAAAQYAn1seAAkAsAovsCvcMDEA//8AIP4GBC8EjQImAdgAAAEHAboBOv6bAAgAslAMAV0wMf//ACAAAAQvBh8CJgHYAAABBgCfRB4ACQCwBi+wDNwwMQD//wAg/jwELwSNAiYB2AAAAAcAeQE5AAr//wBd//AEMAYbAiYB1wAAAQYApVQcAAkAsAAvsBzcMDEA//8AXf/wBDAFygImAdcAAAEGAHBDHAAJALAAL7AR3DAxAP//AF3/8AQwBhQCJgHXAAABBgChfx4AEwCwAEVYsBAvG7EQFj5ZsBPcMDEA//8AXf/wBDAGdwImAdcAAAEHAKMA7QB9AAwAsAAvsBrcsB3QMDH//wBd//AEVQYdAiYB1wAAAQcApgDYAB4ADACwAC+wE9ywFdAwMQABAF3+lQQwBI0AHgBXshofIBESOQCwDS+wAEVYsBcvG7EXFj5ZsABFWLAeLxuxHhY+WbAARViwEi8bsRIMPlmyBBIeERI5sA0QsAiwCitY2BvcWbASELEaAbAKK1gh2Bv0WTAxAREUBgcGFRQzMjcXBiMiJjU0NyYmJxEhERYzMjY1EQQwkHxZQiEvHUlcZH8r0e0CASIGw2FlBI39DJXFLD9JQRSdLG9iTT4K4LkC+fz/tFpnAvT//wAfAAAF2wYeAiYB1QAAAQcAngD9AB4AEwCwAEVYsAwvG7EMFj5ZsA/cMDEA/////wAABE8GHgImAdMAAAEGAJ4kHgATALAARViwCC8bsQgWPlmwDdwwMQD/////AAAETwXyAiYB0wAAAAYAaj8e//8ANwAABAQGHgImAdIAAAEHAHUBMgAeABMAsABFWLAILxuxCBY+WbAM3DAxAP//ADcAAAQEBhYCJgHSAAABBwCiARcALwAJALAHL7AP3DAxAP//ADcAAAQEBh8CJgHSAAABBgCfQx4ACQCwBy+wDtwwMQD//wAHAAAFXAZBAiYAJQAAAAcArv9vAAD///6lAAAEUgZCAiYAKQAAAAcArv3LAAH///6pAAAFIwY/AiYALAAAAAcArv3P//7///6qAAABwQZDAiYALQAAAAcArv3QAAL///9p/+wFQgZBACYAMxQAAAcArv6PAAD///6zAAAFUwZBACYAPWQAAAcArv3ZAAD///9/AAAE/QZBACYAuhQAAAcArv6lAAD///9y//UC8AbCAiYAwwAAAQcAr/8M/+sAEgCwAC+wGNywDdCwGBCwG9AwMf//AAcAAAVcBbACBgAlAAD//wCCAAAEvAWwAgYAJgAA//8AggAABFIFsAIGACkAAP//AEkAAASeBbACBgA+AAD//wCCAAAFIwWwAgYALAAA//8AlQAAAcEFsAIGAC0AAP//AIIAAAUlBbACBgAvAAD//wCCAAAGfgWwAgYAMQAA//8AggAABSIFsAIGADIAAP//AFb/7AUuBcQCBgAzAAD//wCCAAAE3QWwAgYANAAA//8AKAAABMoFsAIGADgAAP//AAIAAATvBbACBgA9AAD//wAWAAAFAAWwAgYAPAAA////rQAAAqkHDQImAC0AAAAHAGr/TwE5//8AAgAABO8HCgImAD0AAAAHAGoAnwE2//8ASf/rBHwGQQImALsAAAEHAK4BJwAAAAkAsBMvsCPcMDEA//8AX//sBC8GQQImAL8AAAEHAK4BBAAAAAkAsAgvsCncMDEA//8AbP5hBBcGQQImAMEAAAEHAK4A/QAAAAkAsAMvsBLcMDEA//8Aiv/1Am8GLAImAMMAAAEGAK7m6wATALAARViwDC8bsQwUPlmwD9wwMQD//wBx/+sEEAbSAiYAywAAAQYArxb7ABIAsAAvsB7csBPQsB4QsCHQMDH//wCCAAAEkgQ6AgYAjgAA//8AQv/sBEMETgIGAFMAAP//AIv+YAROBDoCBgB2AAD//wANAAAD+wQ6AgYAWgAAAAEAGf5LBEoESgAdAGqyFB4fERI5ALAARViwAC8bsQAUPlmwAEVYsAUvG7EFFD5ZsABFWLAPLxuxDw4+WbAARViwFS8bsRUOPlmyBAUPERI5sA8QsQsBsAorWCHYG/RZshQFDxESObAAELEaAbAKK1gh2Bv0WTAxEzIWFxcTIQETFhcXNwcGBwYmJicnAyEBAyYjByc2tm2WMmHOASX+mL0tSCAhGR0kWG9nQEDi/uIBd6wuf0EGTwRKaHXbAaj9Iv5ZZQ8EAeUHAgUzgpyR/jMDBAGIcwbaFwD///+s//UCqAW/AiYAwwAAAAcAav9O/+v//wBx/+sEEAXPAiYAywAAAAYAalj7//8AQv/sBEMGQQImAFMAAAEHAK4A/AAAAAkAsAQvsBzcMDEA//8Acf/rBBAGPAImAMsAAAEHAK4A8P/7ABMAsABFWLAALxuxABQ+WbAV3DAxAP//AFP/7AZBBjsCJgDOAAABBwCuAgP/+gAJALAAL7Al3DAxAP//AIIAAARSBw0CJgApAAAABwBqAJ8BOf//AIQAAAQ9BzkCJgCxAAABBwB1AXgBOQATALAARViwBC8bsQQYPlmwCNwwMQAAAQBF/+wEogXEACcAZrISKCkREjkAsABFWLAKLxuxChg+WbAARViwHi8bsR4MPlmyAx4KERI5sg8KHhESObAKELESAbAKK1gh2Bv0WbADELEXAbAKK1gh2Bv0WbIjHgoREjmwHhCxJQGwCitYIdgb9FkwMQE0JiQnJjU0NjYzMhYWFSE0JiMiBhUUFhcEFhUUBCMiJCY1IRQhMjYDdXj+yFv4hfmbnPSH/tR+cm56j4sBAOr+4vKo/uyRAS0BIGt4AX5VW2UxhuN2uWhxzoNkb11MR2AqTeSqvdd71o3xV///AJUAAAHBBbACBgAtAAD///+tAAACqQcNAiYALQAAAAcAav9PATn//wAo/+wD+QWwAgYALgAA//8AhAAABToFsAIGAiwAAP//AIIAAAUlBzYCJgAvAAABBwB1AWQBNgAJALAEL7AP3DAxAP//AB//6wTxBy8CJgDeAAABBwChANkBOQATALAARViwAS8bsQEYPlmwFNwwMQD//wAHAAAFXAWwAgYAJQAA//8AggAABLwFsAIGACYAAP//AIQAAAQ9BbACBgCxAAD//wCCAAAEUgWwAgYAKQAA//8AeAAABRgHLwImANwAAAEHAKEBBwE5ABMAsABFWLAILxuxCBg+WbAN3DAxAP//AIIAAAZ+BbACBgAxAAD//wCCAAAFIwWwAgYALAAA//8AVv/sBS4FxAIGADMAAP//AIQAAAUkBbACBgC2AAD//wCCAAAE3QWwAgYANAAA//8AVv/sBPsFxAIGACcAAP//ACgAAATKBbACBgA4AAD//wAWAAAFAAWwAgYAPAAA//8ARP/sBAYETgIGAEUAAP//AEj/7AQeBE4CBgBJAAD//wBvAAAEHAXxAiYA8AAAAQcAoQCH//sAEwCwAEVYsAgvG7EIFD5ZsA3cMDEA//8AQv/sBEMETgIGAFMAAP//AG/+YAQ9BE4CBgBUAAAAAQBC/+wD9gROABwAP7IWHR4REjkAsABFWLAPLxuxDxQ+WbAARViwCC8bsQgMPlmxAAGwCitYIdgb9FmwDxCxFgGwCitYIdgb9FkwMSUyNjchDgIjIgARNTQAMzIWFyEmJiMiBhUVFBYCMVBkAgEPAXbNfOj+9AEK6Mv1Av7xAmRSZWdm1VhJbrdlAScBBBP6ASrnwFRpk6Uep5L//wAD/ksEAQQ6AgYAXQAA//8AFQAABAMEOgIGAFwAAP//AEj/7AQeBdQCJgBJAAAABgBqRAD//wBvAAADUAX7AiYA7AAAAQcAdQC6//sAEwCwAEVYsAQvG7EEFD5ZsAjcMDEA//8AOP/sA9IETgIGAFcAAP//AG0AAAGxBecCBgBNAAD///+bAAAClwXFAiYAjQAAAAcAav89//H///+h/ksBrAXnAgYATgAA//8AggAABIQF+wImAPEAAAEHAHUBU//7ABMAsABFWLAELxuxBBQ+WbAP3DAxAP//AAP+SwQBBfYCJgBdAAABBgChRQAAEwCwAEVYsAEvG7EBFD5ZsBTcMDEA//8AIwAABt8HNgImADsAAAEHAEQB4gE2ABMAsABFWLALLxuxCxg+WbAO3DAxAP//ABwAAAXBBgACJgBbAAABBwBEAUgAAAATALAARViwCy8bsQsUPlmwDtwwMQD//wAjAAAG3wc2AiYAOwAAAQcAdQKXATYACQCwAS+wD9wwMQD//wAcAAAFwQYAAiYAWwAAAQcAdQH9AAAAEwCwAEVYsAwvG7EMFD5ZsA/cMDEA//8AIwAABt8HCgImADsAAAAHAGoBqwE2//8AHAAABcEF1AImAFsAAAAHAGoBEQAA//8AAgAABO8HNgImAD0AAAEHAEQA1gE2ABMAsABFWLAILxuxCBg+WbAK3DAxAP//AAP+SwQBBgACJgBdAAABBgBEYwAAEwCwAEVYsBAvG7EQFD5ZsBLcMDEA//8APwPZARMGAAIGAAsAAP//AEAD2wJPBgACBgAGAAD//wB8//AD7AWwACYABQAAAAcABQItAAD///+J/ksCnAXnAiYAnAAAAQcAn/80/+YAEwCwAEVYsAwvG7EMFD5ZsBLcMDEA//8AOgPxAXkGAAIGAYUAAP//AIIAAAZ+BzYCJgAxAAABBwB1AowBNgATALAARViwAi8bsQIYPlmwEdwwMQD//wBvAAAGfgYAAiYAUQAAAQcAdQKZAAAACQCwAy+wINwwMQD//wAH/ncFXAWwAiYAJQAAAAcApwFtAAb//wBE/oEEBgROAiYARQAAAAcApwCPABD//wCCAAAEUgc5AiYAKQAAAQcARADWATkAEwCwAEVYsAYvG7EGGD5ZsA3cMDEA//8AeAAABRgHOQImANwAAAEHAEQBJQE5ABMAsABFWLAILxuxCBg+WbAL3DAxAP//AEj/7AQeBgACJgBJAAABBgBEewAAEwCwAEVYsAgvG7EIFD5ZsB/cMDEA//8AbwAABBwF+wImAPAAAAEHAEQApf/7ABMAsABFWLAILxuxCBQ+WbAL3DAxAP//ADQAAAWYBbACBgC5AAD//wBE/iIFsQQ6AgYAzQAA//8ACwAABQgHEwImARkAAAEHAKwEXAElABYAsABFWLAPLxuxDxg+WbAR3LAV0DAx////6gAABCQF4gImARoAAAEHAKwD+v/0ABYAsABFWLARLxuxERQ+WbAT3LAX0DAx//8AQv5LCIcETgAmAFMAAAAHAF0EhgAA//8AVv5LCYcFxAAmADMAAAAHAF0FhgAA//8AQ/4gBJQFwwImANsAAAAHAlEBh/+F//8ARf4hA9sETQImAO8AAAAHAlEBKv+G//8AVv4oBPsFxAImACcAAAAHAlEBw/+N//8AQv4oA/YETgImAEcAAAAHAlEBQP+N//8AAgAABO8FsAIGAD0AAP//ABH+XwQGBDoCBgC9AAD//wCVAAABwQWwAgYALQAA//8AEQAAB/oHLwImANoAAAEHAKECPQE5ABMAsABFWLANLxuxDRg+WbAZ3DAxAP//ACcAAAa6BfECJgDuAAABBwChAbL/+wATALAARViwDS8bsQ0UPlmwGdwwMQD//wCVAAABwQWwAgYALQAA//8ABwAABVwHLAImACUAAAEHAKEA8QE2ABMAsABFWLAELxuxBBg+WbAO3DAxAP//AET/7AQGBfYCJgBFAAABBgChZAAAEwCwAEVYsBcvG7EXFD5ZsC3cMDEA//8ABwAABVwHCgImACUAAAAHAGoA2AE2//8ARP/sBAYF1AImAEUAAAAGAGpLAP//AAIAAAdJBbACBgCBAAD//wBC/+wGjQRQAgYAhgAA//8AggAABFIHLwImACkAAAEHAKEAuAE5ABMAsABFWLAGLxuxBhg+WbAP3DAxAP//AEj/7AQeBfYCJgBJAAABBgChXQAAEwCwAEVYsAgvG7EIFD5ZsCHcMDEA//8AS//rBS4G3gImAVgAAAAHAGoAswEK//8ATv/sBAEETwIGAJ0AAP//AE7/7AQBBdUCJgCdAAAABgBqRgH//wARAAAH+gcNAiYA2gAAAAcAagIkATn//wAnAAAGugXPAiYA7gAAAAcAagGZ//v//wBD/+0ElAcSAiYA2wAAAAcAagCOAT7//wBF/+wD2wXUAiYA7wAAAAYAajgA//8AeAAABRgG5QImANwAAAEHAHAAywE3ABMAsABFWLAILxuxCBg+WbAL3DAxAP//AG8AAAQcBacCJgDwAAABBgBwS/kAEwCwAEVYsAcvG7EHFD5ZsAvcMDEA//8AeAAABRgHDQImANwAAAAHAGoA7gE5//8AbwAABBwFzwImAPAAAAAGAGpu+///AFb/7AUuBwoCJgAzAAAABwBqAOYBNv//AEL/7ARDBdQCJgBTAAAABgBqZAD//wBa/+wFMgXEAgYBFwAA//8AQP/sBEEETgIGARgAAP//AFr/7AUyBwsCJgEXAAAABwBqAPgBN///AED/7ARBBdQCJgEYAAAABgBqWwD//wA+/+wE4gcTAiYA5wAAAAcAagCzAT///wA//+wD7gXUAiYA/wAAAAYAajAA//8AH//rBPEG5QImAN4AAAEHAHAAnQE3AAkAsAEvsBHcMDEA//8AA/5LBAEFrQImAF0AAAEGAHAJ/wAJALABL7AR3DAxAP//AB//6wTxBw0CJgDeAAAABwBqAMABOf//AAP+SwQBBdQCJgBdAAAABgBqLAD//wAf/+sE8Qc4AiYA3gAAAQcApgEyATkAFgCwAEVYsBAvG7EQGD5ZsBfcsBPQMDH//wAD/ksEGwX/AiYAXQAAAQcApgCeAAAAFgCwAEVYsAEvG7EBFD5ZsBPcsBfQMDH//wCJAAAFDAcNAiYA4QAAAAcAagEUATn//wBYAAAD/wXPAiYA+QAAAAYAamP7//8AhQAABnQHDQAmAOYFAAAnAC0EswAAAAcAagGpATn//wCCAAAGEAXPACYA/gAAACcAjQRpAAAABwBqAXr/+///AEL/7AQRBgACBgBIAAD//wAH/pEFXAWwAiYAJQAAAAcArQURAAb//wBE/psEBgROAiYARQAAAAcArQQzABD//wAHAAAFXAe6AiYAJQAAAQcAqwUVATQACQCwBC+wC9wwMQD//wBE/+wEBgaFAiYARQAAAQcAqwSI//8ACQCwFy+wKtwwMQD//wAHAAAFYQeVAiYAJQAAAQcCNwDBARMAFgCwAEVYsAUvG7EFGD5ZsA7csBTQMDH//wBE/+wE1AZgAiYARQAAAQYCNzTeABYAsABFWLAXLxuxFxQ+WbAt3LAz0DAx//8ABgAABVwHlAImACUAAAEHAjgAwQEYABYAsABFWLAELxuxBBg+WbAO3LAT0DAx////ef/sBAYGXwImAEUAAAEGAjg04wAWALAARViwFy8bsRcUPlmwLdywMtAwMf//AAcAAAVcB80CJgAlAAABBwI5AL8BDQAWALAARViwBS8bsQUYPlmwDNywINAwMf//AET/7AROBpgCJgBFAAABBgI5MtgAFgCwAEVYsBcvG7EXFD5ZsCvcsDHQMDH//wAHAAAFXAfPAiYAJQAAAQcCOgDBAQgAFgCwAEVYsAUvG7EFGD5ZsAzcsBXQMDH//wBE/+wEBgaaAiYARQAAAQYCOjTTABYAsABFWLAXLxuxFxQ+WbAr3LA00DAx//8AB/6RBVwHNgImACUAAAAnAJ4AvQE2AQcArQURAAYAEwCwAEVYsAQvG7EEGD5ZsA/cMDEA//8ARP6bBAYGAAImAEUAAAAmAJ4wAAEHAK0EMwAQABMAsABFWLAXLxuxFxQ+WbAu3DAxAP//AAcAAAVcB6UCJgAlAAABBwI8AO0BNwAWALAARViwBC8bsQQYPlmwDtywGtAwMf//AET/7AQGBm8CJgBFAAABBgI8YAEAFgCwAEVYsBcvG7EXFD5ZsC3csDnQMDH//wAHAAAFXAelAiYAJQAAAQcCNQDtATcAFgCwAEVYsAQvG7EEGD5ZsA7csBzQMDH//wBE/+wEBgZvAiYARQAAAQYCNWABABYAsABFWLAXLxuxFxQ+WbAt3LA70DAx//8ABwAABVwIOAImACUAAAEHAj0A5wEuABYAsABFWLAELxuxBBg+WbAO3LAn0DAx//8ARP/sBAYHAwImAEUAAAEGAj1a+QAMALAXL7At3LA40DAx//8ABwAABVwIFwImACUAAAEHAlAA7QEzABYAsABFWLAELxuxBBg+WbAO3LAb0DAx//8ARP/sBAYG4gImAEUAAAEGAlBg/gAWALAARViwFy8bsRcUPlmwLdywOtAwMf//AAf+kQVcBywCJgAlAAAAJwChAPEBNgEHAK0FEQAGABMAsABFWLAELxuxBBg+WbAO3DAxAP//AET+mwQGBfYCJgBFAAAAJgChZAABBwCtBDMAEAATALAARViwFy8bsRcUPlmwLdwwMQD//wCC/pUEUgWwAiYAKQAAAAcArQTUAAr//wBI/osEHgROAiYASQAAAAcArQSQAAD//wCCAAAEUge9AiYAKQAAAQcAqwTcATcACQCwBi+wDNwwMQD//wBI/+wEHgaFAiYASQAAAQcAqwSB//8ACQCwCC+wHtwwMQD//wCCAAAEUgc2AiYAKQAAAQcApQCNATcAEwCwAEVYsAYvG7EGGD5ZsA/cMDEA//8ASP/sBB4F/gImAEkAAAEGAKUy/wAJALAIL7Ap3DAxAP//AIIAAAUoB5gCJgApAAABBwI3AIgBFgAWALAARViwBi8bsQYYPlmwEdywFdAwMf//AEj/7ATNBmACJgBJAAABBgI3Ld4AFgCwAEVYsAgvG7EIFD5ZsCHcsCfQMDH////NAAAEUgeXAiYAKQAAAQcCOACIARsAFgCwAEVYsAYvG7EGGD5ZsA/csBTQMDH///9y/+wEHgZfAiYASQAAAQYCOC3jABYAsABFWLAILxuxCBQ+WbAh3LAm0DAx//8AggAABKIH0AImACkAAAEHAjkAhgEQABYAsABFWLAGLxuxBhg+WbAP3LAT0DAx//8ASP/sBEcGmAImAEkAAAEGAjkr2AAWALAARViwCC8bsQgUPlmwIdywJdAwMf//AIIAAARSB9ICJgApAAABBwI6AIgBCwAWALAARViwBi8bsQYYPlmwD9ywFtAwMf//AEj/7AQeBpoCJgBJAAABBgI6LdMAFgCwAEVYsAgvG7EIFD5ZsB/csCjQMDH//wCC/pUEUgc5AiYAKQAAACcAngCEATkBBwCtBNQACgATALAARViwBi8bsQYYPlmwENwwMQD//wBI/osEHgYAAiYASQAAACYAnikAAQcArQSQAAAAEwCwAEVYsAgvG7EIFD5ZsCLcMDEA//8AlQAAAiwHvQImAC0AAAEHAKsDiwE3AAkAsAIvsATcMDEA//8AhgAAAhoGdQImAI0AAAEHAKsDef/vAAkAsAIvsATcMDEA//8AiP6NAcsFsAImAC0AAAAHAK0DgQAC//8Abf6VAbEF5wImAE0AAAAHAK0DZgAK//8AVv6LBS4FxAImADMAAAAHAK0FHgAA//8AQv6FBEMETgImAFMAAAAHAK0Emf/6//8AVv/sBS4HugImADMAAAEHAKsFIwE0ABMAsABFWLAMLxuxDBg+WbAf3DAxAP//AEL/7ARDBoUCJgBTAAABBwCrBKH//wAJALAEL7Aa3DAxAP//AFb/7AVvB5UCJgAzAAABBwI3AM8BEwAWALAARViwDS8bsQ0YPlmwItywKNAwMf//AEL/7ATtBmACJgBTAAABBgI3Td4AFgCwAEVYsAQvG7EEFD5ZsB3csCPQMDH//wAU/+wFLgeUAiYAMwAAAQcCOADPARgAFgCwAEVYsAwvG7EMGD5ZsCLcsCfQMDH///+S/+wEQwZfAiYAUwAAAQYCOE3jABYAsABFWLAELxuxBBQ+WbAd3LAi0DAx//8AVv/sBS4HzQImADMAAAEHAjkAzQENABYAsABFWLAMLxuxDBg+WbAi3LAm0DAx//8AQv/sBGcGmAImAFMAAAEGAjlL2AAWALAARViwBC8bsQQUPlmwHdywIdAwMf//AFb/7AUuB88CJgAzAAABBwI6AM8BCAAWALAARViwDC8bsQwYPlmwINywKdAwMf//AEL/7ARDBpoCJgBTAAABBgI6TdMAFgCwAEVYsAQvG7EEFD5ZsB3csCTQMDH//wBW/osFLgc2AiYAMwAAACcAngDLATYBBwCtBR4AAAATALAARViwDC8bsQwYPlmwI9wwMQD//wBC/oUEQwYAAiYAUwAAACYAnkkAAQcArQSZ//oAEwCwAEVYsAQvG7EEFD5ZsB7cMDEA//8AUP/sBbsHOQImAJgAAAEHAHUB0QE5ABMAsABFWLANLxuxDRg+WbAp3DAxAP//AED/7AS3BgACJgCZAAABBwB1AVEAAAATALAARViwBC8bsQQUPlmwJdwwMQD//wBQ/+wFuwc5AiYAmAAAAQcARAEcATkAEwCwAEVYsA0vG7ENGD5ZsCjcMDEA//8AQP/sBLcGAAImAJkAAAEHAEQAnAAAABMAsABFWLAELxuxBBQ+WbAk3DAxAP//AFD/7AW7B70CJgCYAAABBwCrBSIBNwATALAARViwDS8bsQ0YPlmwJ9wwMQD//wBA/+wEtwaFAiYAmQAAAQcAqwSi//8AEwCwAEVYsAQvG7EEFD5ZsCPcMDEA//8AUP/sBbsHNgImAJgAAAEHAKUA0wE3ABMAsABFWLANLxuxDRg+WbAq3DAxAP//AED/7AS3Bf4CJgCZAAABBgClU/8AEwCwAEVYsAQvG7EEFD5ZsCbcMDEA//8AUP6LBbsGHgImAJgAAAAHAK0FAgAA//8AQP6CBLcEnwImAJkAAAAHAK0EmP/3//8AdP6LBNAFsAImADkAAAAHAK0E9QAA//8AaP6LBA8EOgImAFkAAAAHAK0ELwAA//8AdP/sBNAHugImADkAAAEHAKsE/wE0AAkAsAAvsBHcMDEA//8AaP/sBA8GhQImAFkAAAEHAKsEnf//AAkAsAYvsBHcMDEA//8AdP/sBlQHQgImAJoAAAEHAHUB2wFCABMAsABFWLAZLxuxGRg+WbAc3DAxAP//AGj/7AU3BewCJgCbAAABBwB1AVD/7AATALAARViwEy8bsRMUPlmwG9wwMQD//wB0/+wGVAdCAiYAmgAAAQcARAEmAUIAEwCwAEVYsBIvG7ESGD5ZsBvcMDEA//8AaP/sBTcF7AImAJsAAAEHAEQAm//sABMAsABFWLANLxuxDRQ+WbAa3DAxAP//AHT/7AZUB8YCJgCaAAABBwCrBSwBQAATALAARViwEi8bsRIYPlmwGtwwMQD//wBo/+wFNwZwAiYAmwAAAQcAqwSh/+oAEwCwAEVYsA0vG7ENFD5ZsBncMDEA//8AdP/sBlQHPwImAJoAAAEHAKUA3QFAABMAsABFWLAZLxuxGRg+WbAd3DAxAP//AGj/7AU3BekCJgCbAAABBgClUuoAEwCwAEVYsBMvG7ETFD5ZsBzcMDEA//8AdP6CBlQGAQImAJoAAAAHAK0FIv/3//8AaP6LBTcEmQImAJsAAAAHAK0EkgAA//8AAv6tBO8FsAImAD0AAAAHAK0EzgAi//8AA/4fBAEEOgImAF0AAAAHAK0Fcv+U//8AAgAABO8HugImAD0AAAEHAKsE3AE0AAkAsAEvsAncMDEA//8AA/5LBAEGhQImAF0AAAEHAKsEaf//AAkAsAEvsBHcMDEA//8AAgAABO8HMwImAD0AAAEHAKUAjQE0ABMAsABFWLABLxuxARg+WbAM3DAxAP//AAP+SwQBBf4CJgBdAAABBgClGv8ACQCwAS+wHNwwMQD//wBC/pUErgYAACYASAAAACcCJgFmAjoBBwBDAJP/dwAhALJgGgFxsrAaAV2yIBoBcbLwGgFdsi8bAV2ynxsBXTAxAP//ACj+mwTKBbACJgA4AAAABwJRAk8AAP//AB/+mwPxBDoCJgD2AAAABwJRAfgAAP//AIn+mwUMBbACJgDhAAAABwJRAqYAAP//AFj+mwP/BDoCJgD5AAAABwJRAZ8AAP//AIT+mwQ9BbACJgCxAAAABwJRAQ0AAP//AG/+mwNQBDoCJgDsAAAABwJRAPIAAP///+X+KgWwBcQCJgFMAAAABwJRAsT/j////7z+MgSyBE4CJgFNAAAABwJRAeP/l///AGgAAAQPBgACBgBMAAAAAv/VAAAExgWwABIAGwBkALAARViwDy8bsQ8YPlmwAEVYsAovG7EKDD5ZsgIKDxESObACL7IODwIREjmwDi+xCwewCitYIdgb9FmwAdCwDhCwEdCwAhCxEwGwCitYIdgb9FmwChCxFAGwCitYIdgb9FkwMQEjFTMgBBUUAAchESM1MzUhFTMDETMyNjU0JicCkOLqAQEBLf7V+P3dq6sBLuLi73OJg3IEQZ7509T+/wIEQbe4uP25/kB+amNzAgAAAv/VAAAExgWwABIAGwBkALAARViwEC8bsRAYPlmwAEVYsAovG7EKDD5ZsgIKEBESObACL7IRAhAREjmwES+xAQewCitYIdgb9FmwC9CwERCwDtCwAhCxEwGwCitYIdgb9FmwChCxFAGwCitYIdgb9FkwMQEjFTMgBBUUAAchESM1MzUhFTMDETMyNjU0JicCkOLqAQEBLf7V+P3dq6sBLuLi73OJg3IEQZ7509T+/wIEQbe4uP25/kB+amNzAgAAAf/lAAAEPQWwAA0ASwCwAEVYsAgvG7EIGD5ZsABFWLACLxuxAgw+WbINCAIREjmwDS+xAAewCitYIdgb9FmwBNCwDRCwBtCwCBCxCgGwCitYIdgb9FkwMQEjESERIzUzESEVIREzAqDw/tSfnwO5/XPwApb9agKWtwJj8/6QAAAB/8YAAANQBDoADQBLALAARViwCC8bsQgUPlmwAEVYsAIvG7ECDD5Zsg0IAhESObANL7EAB7AKK1gh2Bv0WbAE0LANELAG0LAIELEKAbAKK1gh2Bv0WTAxASMRIREjNTMRIRUhFTMCgfH+36mpAuH+QPEBxf47AcW3Ab7q1AAB/8wAAAVOBbAAFAB2ALAARViwCC8bsQgYPlmwAEVYsBAvG7EQGD5ZsABFWLACLxuxAgw+WbAARViwEy8bsRMMPlmyDggCERI5sA4vsQEBsAorWCHYG/RZsgcIAhESObAHL7EEB7AKK1gh2Bv0WbAHELAK0LAEELAM0LISAQ4REjkwMQEjESERIzUzNSEVMxUjFTMBIQEBIQJxrf7UzMwBLMPDiQFkAW7+PwHw/poCU/2tBEq3r6+34QJH/U/9AQAB/6gAAARiBgAAFAB6ALAARViwCC8bsQgaPlmwAEVYsBAvG7EQFD5ZsABFWLACLxuxAgw+WbAARViwEy8bsRMMPlmwAhCwDtCwDi+y3w4BXbEBAbAKK1gh2Bv0WbIHCBAREjmwBy+xBAewCitYIdgb9FmwBxCwCtCwBBCwDNCyEgEOERI5MDEBIxEhESM1MzUhFTMVIxEzEyEBASECAVv+393dASG9vVH2AU7+rQF6/rMBwP5ABLi3kZG3/e0Blf4R/bUAAQACAAAE7wWwAA4AV7IKDxAREjkAsABFWLAILxuxCBg+WbAARViwCy8bsQsYPlmwAEVYsAIvG7ECDD5ZsgYIAhESObAGL7EFB7AKK1gh2Bv0WbAA0LIKCAIREjmwBhCwDtAwMQEjESERIzUzASEBASEBMwPezf7PvWb+eQFJAS0BLwFI/nl2AgL9/gICtwL3/XACkP0JAAABABH+XwQGBDoADgBksgoPEBESOQCwAEVYsAgvG7EIFD5ZsABFWLALLxuxCxQ+WbAARViwAi8bsQIOPlmwAEVYsAAvG7EADD5ZsABFWLAELxuxBAw+WbEGB7AKK1gh2Bv0WbIKCwAREjmwDdCwDtAwMSUjESERIzUzASETEyEBMwNw1f7fxYr+0gEu0MkBLv7SmAv+VAGstwN4/RsC5fyIAAABABYAAAUABbAAEQBkALAARViwCy8bsQsYPlmwAEVYsA4vG7EOGD5ZsABFWLACLxuxAgw+WbAARViwBS8bsQUMPlmyEQsCERI5sBEvsQAHsAorWCHYG/RZsgQLAhESObAH0LARELAJ0LINCwIREjkwMQEjASEBASEBIzUzASEBASEBMwPscAGE/qP+6P7o/qMBhGlb/pUBWQERAREBWf6VYgKP/XEB/v4CAo+3Amr+CgH2/ZYAAAEAFQAABAMEOgARAGQAsABFWLALLxuxCxQ+WbAARViwDi8bsQ4UPlmwAEVYsAIvG7ECDD5ZsABFWLAFLxuxBQw+WbIRDgIREjmwES+xAAewCitYIdgb9FmyBA4CERI5sAfQsBEQsAnQsg0OAhESOTAxASMBIQMDIQEjNTMDIRMTIQMzA296AQ7+ysHA/skBDm9r/AE2srYBNf12AdD+MAFU/qwB0LcBs/69AUP+TQD//wBf/+wELwRNAgYAvwAA////8wAABDYFsAImACoAAAEHAib/Zv5QAA0AsnANAV2yEA0BcTAxAP//AG0CVAXSA0AARgGvggBmZkAA//8ARgAABEkFxAIGABYAAP//AED/7AQzBcQCBgAXAAD//wA3AAAEXwWwAgYAGAAA//8Aaf/sBEIFsAIGABkAAP//AHj/7ARjBb8ABgAaFAD//wBz/+wESwXEAAYAHBQA//8AVv/yBCwFxAAGAB0AAP//AHP/7ARLBcQABgAUFAD//wBe/+wFAgc+AiYAKwAAAQcAdQHHAT4ACQCwDC+wI9wwMQD//wBF/lYEIgYAAiYASwAAAQcAdQE6AAAACQCwAy+wKdwwMQD//wCCAAAFIgc2AiYAMgAAAQcARAExATYAEwCwAEVYsAYvG7EGGD5ZsAvcMDEA//8AaQAABA8GAAImAFIAAAEHAEQAmgAAABMAsABFWLADLxuxAxQ+WbAT3DAxAP//AAcAAAVcByMCJgAlAAABBwCsBIUBNQAWALAARViwBC8bsQQYPlmwDNywENAwMf///+j/7AQGBe4CJgBFAAABBwCsA/gAAAAWALAARViwFy8bsRcUPlmwK9ywL9AwMf//ADwAAARSByYCJgApAAABBwCsBEwBOAAWALAARViwBi8bsQYYPlmwDdywEdAwMf///+H/7AQeBe4CJgBJAAABBwCsA/EAAAAWALAARViwCC8bsQgUPlmwH9ywI9AwMf///usAAAJRByYCJgAtAAABBwCsAvsBOAAWALAARViwAi8bsQIYPlmwBdywCdAwMf///tkAAAI/Bd4CJgCNAAABBwCsAun/8AAWALAARViwAi8bsQIUPlmwBdywCdAwMf//AFb/7AUuByMCJgAzAAABBwCsBJMBNQAWALAARViwDC8bsQwYPlmwINywJNAwMf//AAH/7ARDBe4CJgBTAAABBwCsBBEAAAAWALAARViwBC8bsQQUPlmwG9ywH9AwMf//ABcAAATwByMCJgA2AAABBwCsBCcBNQAWALAARViwBC8bsQQYPlmwGdywHdAwMf///1sAAALTBe4CJgBWAAABBwCsA2sAAAAWALAARViwBy8bsQcUPlmwD9ywE9AwMf//AF//7ATQByMCJgA5AAABBwCsBG8BNQAWALAARViwCC8bsQgYPlmwEtywFtAwMf////3/7AQPBe4CJgBZAAABBwCsBA0AAAAWALAARViwBy8bsQcUPlmwEtywFtAwMf///oUAAAU6BkEAJgDQZAAABwCu/asAAP//AIL+lQS8BbACJgAmAAAABwCtBLAACv//AG/+ggQ+BgACJgBGAAAABwCtBOr/9///AIL+lQTbBbACJgAoAAAABwCtBGcACv//AEL+iwQRBgACJgBIAAAABwCtBKQAAP//AIL+BgTbBbACJgAoAAABBwG6ASj+mwANALJQGgFdsrAaAV0wMQD//wBC/fwEEQYAAiYASAAAAAcBugFl/pH//wCC/pUFIwWwAiYALAAAAAcArQUrAAr//wBo/pUEDwYAAiYATAAAAAcArQSeAAr//wCCAAAFJQc2AiYALwAAAQcAdQFkATYACQCwBC+wD9wwMQD//wBvAAAEWgc4AiYATwAAAQcAdQGbATgACQCwBS+wD9wwMQD//wCC/skFJQWwAiYALwAAAAcArQTjAD7//wBv/rMEWgYAAiYATwAAAAcArQSKACj//wCC/pUEKwWwAiYAMAAAAAcArQSwAAr//wBt/pUBsAYAAiYAUAAAAAcArQNmAAr//wCC/pUGfgWwAiYAMQAAAAcArQXWAAr//wBv/pUGfgROAiYAUQAAAAcArQXdAAr//wCC/o0FIgWwAiYAMgAAAAcArQUrAAL//wBp/pUEDwROAiYAUgAAAAcArQSTAAr//wBW/+wFLgfUAiYAMwAAAQcCNgT4AVUAFgCwAEVYsAwvG7EMGD5ZsCLcsDXQMDH//wCCAAAE3QdCAiYANAAAAQcAdQFoAUIACQCwAy+wF9wwMQD//wBv/mAEPQX3AiYAVAAAAQcAdQGn//cACQCwDC+wHNwwMQD//wCC/pUE8AWwAiYANgAAAAcArQS7AAr//wBi/pUC0wROAiYAVgAAAAcArQNbAAr//wBF/osEogXEAiYANwAAAAcArQTgAAD//wA4/oID0gROAiYAVwAAAAcArQRo//f//wAo/pIEygWwAiYAOAAAAAcArQTLAAf//wAK/osCjQVEAiYAWAAAAAcArQQIAAD//wB0/+wE0AfUAiYAOQAAAQcCNgTUAVUAFgCwAEVYsAkvG7EJGD5ZsBTcsCfQMDH//wAHAAAFNAc/AiYAOgAAAQcApQCvAUAAEwCwAEVYsAYvG7EGGD5ZsArcMDEA//8ADQAAA/sF9AImAFoAAAEGAKUa9QATALAARViwAS8bsQEUPlmwCtwwMQD//wAH/pUFNAWwAiYAOgAAAAcArQT0AAr//wAN/pUD+wQ6AiYAWgAAAAcArQReAAr//wAj/pUG3wWwAiYAOwAAAAcArQXaAAr//wAc/pUFwQQ6AiYAWwAAAAcArQVHAAr//wBJ/pUEngWwAiYAPgAAAAcArQTKAAr//wBK/pUDzAQ6AiYAXgAAAAcArQRkAAr///4X/+wFdAXXACYAM0YAAAcBcf28AAD////dAAAErQUeAiYCMwAAAAcArv8D/t3///72AAAD+AUhACYCKDwAAAcArv4c/uD///7wAAAErwUaACYB5DwAAAcArv4W/tn///7xAAAB1AUhACYB4zwAAAcArv4X/uD///9V//AEiAUeACYB3QoAAAcArv57/t3///66AAAEiwUeACYB0zwAAAcArv3g/t3///9iAAAEkQUfACYB8woAAAcArv6I/t7/////AAAErQSNAgYCMwAA//8AYwAABCIEjQIGAjIAAP//AGMAAAO8BI0CBgIoAAD//wA3AAAEBASNAgYB0gAA//8AYwAABHMEjQIGAeQAAP//AHYAAAGYBI0CBgHjAAD//wBjAAAEdQSNAgYB4QAA//8AYwAABaMEjQIGAd8AAP//AGMAAARyBI0CBgHeAAD//wBA//AEfgSdAgYB3QAA//8AYwAABDUEjQIGAdwAAP//ACAAAAQvBI0CBgHYAAD/////AAAETwSNAgYB0wAA//8AAwAABFwEjQIGAdQAAP///4sAAAKHBfICJgHjAAAABwBq/y0AHv////8AAARPBfICJgHTAAAABgBqPx7//wBjAAADvAXyAiYCKAAAAAYAak0e//8AYwAAA6gGHgImAeoAAAEHAHUBEwAeABMAsABFWLAELxuxBBY+WbAI3DAxAP//ADr/8AQBBJ0CBgHZAAD//wB2AAABmASNAgYB4wAA////iwAAAocF8gImAeMAAAAHAGr/LQAe//8AIP/wA3kEjQIGAeIAAP//AGMAAAR1Bh4CJgHhAAABBwB1AQ0AHgATALAARViwBS8bsQUWPlmwD9wwMQD//wAb/+wEaQYUAiYCAQAAAQcAoQCOAB4AEwCwAEVYsBAvG7EQFj5ZsBTcMDEA/////wAABK0EjQIGAjMAAP//AGMAAAQiBI0CBgIyAAD//wBjAAADqASNAgYB6gAA//8AYwAAA7wEjQIGAigAAP//AGMAAAR2BhQCJgH+AAABBwChAKcAHgATALAARViwCC8bsQgWPlmwDdwwMQD//wBjAAAFowSNAgYB3wAA//8AYwAABHMEjQIGAeQAAP//AED/8AR+BJ0CBgHdAAD//wBjAAAEfASNAgYB7wAA//8AYwAABDUEjQIGAdwAAP//AED/8ARSBJ0CBgIxAAD//wAgAAAELwSNAgYB2AAA//8AAwAABFwEjQIGAdQAAAABAD7+HwP6BJ0AKQCvALAARViwCi8bsQoWPlmwAEVYsBkvG7EZDD5ZsABFWLAYLxuxGA4+WbAKELEDAbAKK1gh2Bv0WbIGChkREjmyJxkKERI5sCcvss8nAXG0rye/JwJdsj8nAXGynycBcbL/JwFdsg8nAXG0byd/JwJdsv8nAXGyDycBcrKPJwFysSYIsAorWCHYG/RZshAmJxESObAZELAW0LIdGQoREjmwGRCxIAGwCitYIdgb9FkwMQE0JiMiBhUhNDYzMhYVFAYHFhYVFAYHESERJiY1IRYWMzI2NTQnIzUzNgLGX1dHWP7e+Mve92hZaGyypf7fnKgBIgJeVl9kxJOdpwM3PUE2LZizp5VZjCgjjl6CrRv+JAHfH66DN0FJQ40DwQQAAQBj/psFUASNAA8AbQCwAS+wAEVYsAkvG7EJFj5ZsABFWLADLxuxAww+WbAARViwBi8bsQYMPlmyCwMJERI5fLALLxiywAsBXbQwC0ALAl20QAtQCwJxsQQBsAorWCHYG/RZsAkQsAzQsAMQsQ4BsAorWCHYG/RZMDEBIREjESERIREhESERIREzBVD+393+M/7eASIBzQEh3f6bAWUBxv46BI3+IgHe/EAAAAEAQP4rBFIEnQAcAGCyDR0eERI5ALAEL7AARViwDS8bsQ0WPlmwAEVYsAMvG7EDDD5ZsABFWLAGLxuxBgw+WbIRDQMREjmwDRCxEwGwCitYIdgb9FmwAxCxGQGwCitYIdgb9FmyHAMNERI5MDEBBgYHESERJgInNRAAMzIEFyEmIyIDFRQWMzI2NwRRCsWi/t+1yAIBG/HiARAU/t8K2+QHb35tbwUBj57UH/4tAdUoAR3dPgEFATjix8D+wUqzoFhfAP////8AAARPBI0CBgHTAAD//wAV/iAF3wSrAiYCFwAAAAcCUQML/4X//wBjAAAEdgXKAiYB/gAAAQYAcGscABMAsABFWLAILxuxCBY+WbAL3DAxAP//ABv/7ARpBcoCJgIBAAABBgBwUhwACQCwAS+wEdwwMQD//wBBAAAFlgSNAgYB8QAA//8Adv/wBYgEjQAmAeMAAAAHAeICDwAA////1wAABhIGAAImAnMAAAAHAHUCZwAA//8AQP/JBH4GHgImAnUAAAAHAHUBbQAe//8AOv38BAEEnQImAdkAAAAHAboBUf6R//8AHwAABdsGHgImAdUAAAAHAEQBTwAe//8AHwAABdsGHgImAdUAAAAHAHUCBAAe//8AHwAABdsF8gImAdUAAAAHAGoBGAAe/////wAABE8GHgImAdMAAAAGAER2Hv//AAf+YAVcBbACJgAlAAAABwCkAYUABv//AET+agQGBE4CJgBFAAAABwCkAKcAEP//AIL+ZARSBbACJgApAAAABwCkAUgACv//AEj+WgQeBE4CJgBJAAAABwCkAQQAAP/////+WgStBI0CJgIzAAAABwCkASYAAP//AGP+YgO8BI0CJgIoAAAABwCkAPcACP//AG3+lQGwBDoCJgCNAAAABwCtA2YACgABAAAFDgCPABYATgAFAAEAAAAAAA4AAAIAAjIABgABAAAAUQBRAFEAUQBRAIwAtwE8AbUCSwLSAu0DGgNIA3sDowPIA98EBgQdBHIEoQT5BX0FwgYrBpQGwgdJB7MHwwfTB/MIGwg7CKIJUAmRChAKZgqqCu8LLwueC94L+gwwDHUMmgzpDScNgQ3PDi8Oiw77DyYPZg+YD+gQMxBkEJ0QwhDaEQARJxFBEVsR1RI4Eo0S6RNXE6kUJhRrFKcU8xU0FVAVvBYHFlcWvBceF10XxBgRGFoYixjaGSMZZxmgGd8Z9ho0GnEapRsEG24b0BwyHFMc7R0fHcUeNR5BHl8fCh8kH2AfoB/1IHIgxSEQITwhXSGPIcEiBSIRIisiPCJNIq4jFCNSI8MkFySAJUoluSYVJogm6CdjJ8Mn3ygtKHcotikIKWUp6yqBKrIrFit9K+ssUCyoLQctOC2gLdEt+S4HLjMuUy6MLrQu+i8wL2Yvgy+gL6kv2TALMC0wRzCJMJEwuDDmMVkxhzHYMggyRTLAMx0zhzP9NHY0qjUdNZg18TY6Nqc21jcvN6A38zhOOKE49jk8OX457zpIOq87Jjt1O+w8UTy0PSo9rT4EPkI+mj7zP2c/3UAYQGNAqEERQUlBj0HOQhlCckLYQyVDi0QHRGBEykU8RWNFuUYnRqBG20ckR2xHtkf5SClIVkjjSRtJX0meSeRKPEqgSutLU0vQTCpMok0UTYdOA05nTqRPBE9jT8xQSlDPUR1RbVHbUktSwFMsU7tUQVTjVXtV+FZmVqtW8ldeV8NYf1k3Wa5aLFp+Wsda/FsYW09bZVt7XE9cwlzdXPhdYV26XixeXF6GXt5fLF84X0RfUF9cX7FgB2BZYKxguGDEYRBhYGHCYhliqWMxYz1jSWOXY9xj6GP0ZEZklmTcZU1lxWYfZnBmfGaIZvVnUWddZ2lndWeBZ+doSWiiaLZo02jfaOtpO2mfaiNql2sFa2tr0mw/bKttHG2PbeduO26Lbt5vWG9kb3BvnG+cb5xvnG+cb5xvnG+cb5xvnG+cb5xvnG+cb6RvrG+2b8Bv53ALcC9wTXBpcHVwgXCzcPNxVnF6cYZxlnG5coJynnK7cs5y4nMqc7R0U3TldPF1r3YVdpd3a3fWeFJ4rnkiebl6G3qxew97c3uNe657z3vpfFV8fXy2fM19An2PfdJ+Un6Sfql+wH75fwZ/MH9Sf15/yYAdgLuBQ4HEgpyCnIQNhHyE0IT8hUeFr4YxhmKGw4clh2+H6Ig7iG2Iu4j0iSWJbom+ie+KKYpUisOLGot3i8OMG4xWjKiMzY0SjUSNYI2qjhKOT47KjzSPl4/Cj/iQb5CjkPCRI5FikdCSLZKNkuyTZpPdlFuUrpTvlUOVmpYXlqCW3pcpl3SXuZf2mDqYe5jHmR+ZK5l5mfOac5rLmw6bi5vinDqcj50anSadfp3MnhyeYZ7PnzSflaAQoLihTaHqomai6aMro4+j8aQepJ2lBaUipXOluqZsptanOqeCp8moDqhTqJ6o9Kl9qb2p3aonqpyq3askq3qr96wlrHCsyKzcrPCtAq0WrSitP61Tra+uGK5jrr6vHq9Jr6Gv+rBDsKKwybE8sVOx1LI6smeyeLKJspyyrbK+stGy5LL3sw2zHrMmsy6zNrNBs0mzrbQDtDG0krTmtUa1v7YPtna22bdEt763xrhGuI64+blMucW6N7qKuoq6krrxu1K7tbv5vGS8e7yNvKS8trzCvNW867z3vQ69Jb08vUi9X712vY29mb2rvcK92b3wvge+E74qvjy+U75fvna+iL6avrC+wb7Mvt+/DL8Yvym/O79Rv1y/c7+Jv6C/rL+9v8+/4b/3wAjAE8AqwEHAV8BiwHTAf8CWwKfAvsDUwT/B4sH5wgvCIsI4wk/CYcJzwoTClsKmwr3CzsLlwvvDDcMfw5DEG8QtxD7EVcRrxILEmMSqxLzEyMTaxPHFA8UaxTHFSMVfxXbFjcWYxaPFtcXBxc3F5MX7xgfGE8YqxkHGTcZZxm7GesaGxpLGqca7xsfG08bqxwDHEscpxzrHUcdnx3/Hksepx8DHzMfYx+/IBcgXyCnIQMhWyGLIbsh6yIbIncizyMTI0MjcyOjI/8kLyR3JM8lFyVvJcsmIyZvJrsnBydnKOMqkyrvK0srpyv/LC8siyznLUMtny37LlMury73L1MvrzA7MMcxBzFjMb8yFzJvMpsy5zMXM0czozP/NEM0bzTLNSM1fzWvNgs2ZzavNwc3Szd7N9c4MziLOLc5EzlrOcc7bzu3PA88VzybPN89Nz2PPdc/iz/PQCdAg0DLQQ9BZ0HDQh9Ce0KnQutDR0OLQ+NEJ0R7RL9FG0VLRZNF10YzRn9Gx0cLR09Hl0fvSB9IY0inSOtJG0lfSaNJ+0pHSpNMA0xfTLdM400/TYdNy037TitOW06LTrtO608bT3NPk0+zT9NP81ATUDNQU1BzUJNQs1DTUPNRE1EzUWNRk1HbUiNSa1LDUxdTN1NXU3dTl1VLVXtVp1XvVktWk1bDVx9Y31j/WS9ZT1lvWbdaE1ozWlNac1qTWu9bD1svW09bb1uPW69bz1vvXA9cL1yLXKtcy14DXiNeQ15vXste618LXztfW1+3YA9ga2DHYQ9ha2GbYctiJ2J/Yp9iv2LvY0tja2PHZA9kP2RvZMtlJ2V/Zdtl+2YbZntm22cLZztna2ebZ8tn+2gbaDtoW2i3aRNpM2mPaedqF2pDamNqg2rfazdrZ2uHa7Nr42wTbENsb2zLbSNtU21/ba9t2237bhtuS253bqdu028bb19vj2+7cBtwe3CrcNdxF3FXcXdxp3HXch9yZ3LHcyNzg3PfdD90m3T7dVd1w3Yrdot253dHd6N4A3hLeKt5B3lzedt6C3o7eoN6y3sne2t7y3wnfId8431DfZ99/35bfsd/L393f79/74AfgE+Af4DbgSOBg4Hfgj+Cm4L7g1eDt4QThH+E54VDhZ+F+4ZXhrOHD4drh8OH84gjiFOIg4jLiROJb4nLiieKg4rfizuLl4vvjB+MT4x/jK+M940/jZuN345njpeOx473jyePV4+Hj7eP55AHkYeTB5QHlQOWg5gLmTuaf5vrnUuda527neOeA54jnkOeY56DnqOew57jnyufc5/PoCugi6DroUuhq6ILomuiy6Mro4uj66RLpKuk26ULpTula6WbpeumG6ZLpnumw6cLpzuna6ebp8un+6grqFuoi6jrqTOpe6mrqduqC6o7qmuqm6r7q1err6vfrA+sP6xvrJ+sz6z/rS+tX62Prb+t764frk+ub66Prq+uz67vrw+vL69Pr2+vj6+vr8+v77APsD+wa7CXsPOxE7EzsWOxg7HfsjuyW7J7spuyu7MXszezV7N3s5ezt7PXs/e0F7Zrt8O5S7lruZu587o3ule6h7q3uue7F7tHu3e7p7vTvAO8M7xjvJO8w7zzvSAAAAAEAAAACIxLqWEw6Xw889QAZCAAAAAAAxPARLgAAAADVAVLW+jD91QmHCHMAAQAJAAIAAAAAAAADjABkAAAAAAAAAAAB/gAAAf4AAAItAHwCkQBABMQAQASXAFwF6ABfBUAARwFLAD8CzwB8AtIAKAOgABsEXgA5AfQAIwMaAG4CUwB+Av3/8wSXAF8ElwCnBJcARgSXAEAElwA3BJcAaQSXAGQElwA9BJcAXwSXAFYCQgB9AhkAOQQSADYElACIBCIAeAP7AC0HKQBLBWIABwUbAIIFPABWBTMAggSAAIIEYgCCBXMAXgWnAIICVQCVBHgAKAUUAIIEVQCCBwIAggWmAIIFhgBWBSkAggWGAFQFGwCCBOsARQTzACgFRAB0BTsABwb/ACMFFQAWBPIAAgTZAEkCOQB4A2AAAAI5AA0DfwAsA5IAAQKlADQESgBEBIEAbwQsAEIEggBCBFMASALeAB0EkQBFBHoAaAIfAG0CFP+hBEYAbwIfAH4G7QBvBHsAaQSGAEIEgQBvBIUAQgLrAG8EHQA4ArQACgR6AGgECwANBeEAHAQSABUEBAADBBIASgKkADACBgCtAqQAIgUwAGoCQgCABJoAYwTBAGMFigBRBEoACgIEAIAFBwBcA7wAXgZGAFYDjQCJA/8ATQRpAH4GRgBWBAIAqAMbAH4ETABZAvsANwL7ADACpwBlBO0AiwPrAEsCaQCMAiQAYgL7AIcDqAB2A/8AVQW+AGUGFwBUBncAXgP7AEUHhQACBEAAQQWDAF0E3gCFBQwAhwbBAEIEmgBUBJAAPwSEAEIEigBxBQsAQgXCACACMQCGBLgAggR2AB0CcgAeBaAAgASEAGwHvwBgBzcAUwITAHUFjwBLAuP/3QWcAFAEpgBABbMAdAThAGgCQf+tBDwATgP3AHsDxABVBAIAqAONAGoCHwB2AqoAdwJoACED2QB1A0gAOQKDAI4AAPyAAAD9VgAA/GEAAP0fAAD78AAA/QcCsgDaBGMAZgJpAIwEdQCEBdkAFAWBAFIFLgAQBIkAXwWpAIQEiQBIBigASQXQADQFYABmBIIASQTQAI4EFQARBIQARARzAF8EAgBMBIQAbAS4AHACsgCKBGMABwQ9AGcFJgA0BIQAcQQeAD8ElABCBCoALAReAHEF9wA2BfQARAaRAFMEwwB1BLr/5waeABQF+wAdBUcAVwh2ACgIeACEBiwAIQWaAHUFAwB/BfsAGQf7ABEE7wBDBZoAeAWmACgFDQAfBogASQYSAHUFkACJB6sAgAgrAIAGKgAZBvkAhQUBAIAFNAA+B4wAjgTG/+QEjgBUBIcAggNaAG8FDQAhBtUAJwQcAEUEigBvBIIAggSMABYGEwCCBIoAbwSKAG8EEwAfBdgARATgAG8EbgBYBp4AbwczAGwFPwAhBp8AggR3AIIEKQA/Bn4AhgR5ACkEev/MBCkAQAbeABUG5ABvBIT/2gSKAG8HkwB3BpAAZAR2/+UHJAB9BgkAdQVJAA8EeQAHB3sAkwZjAH4G+QBtBd4AbwlNAJUIDACGBBwABwQHABwFgQBaBIQAQAUkAAsEFQARBYEAWgSEAEIHkgB3BncAbAeTAHcGkABkBPgAWQRHAFYE+wBrAAD8cwAA/HgAAP2WAAD9pwAA+jAAAPpwBjgAeAU4AG8Edv/lBQgAggSCAG8EcQB/A7EAbAT7AIQEOwBsCI0AEQdFACcF8gCEBTMAggVLAIAE0QCCBpsAJQW5ADoGQACCBTEAbwfhAIIFpgBsCFwAhAbtAGwGbQBeBSoAVQVVABYEVwAVBykAIgV/AC0GJACJBRcAWAVxAG4EewBoBZcAhgYO/+UEyP+8BTIAgASRAIIGQAAoBTgAFgWoAIQEhABsBkQAggU1AG8HmgCCBqMAggWPAEsEoABQBKIAUgTOACUDqwAWBZoAFgScABUFAQBJB0IAdAbUAFoGTQBBBSQALQSvAEEEeQBtB7gAQAbHAD8H9ACBBpoAXQURAEYEPABGBaQAHwUZAEIFPgBqBoEAKAV5ABYDHwBbBBQAAAgpAAAEFAAACCkAAAK5AAACCgAAAVwAAAR/AAACMAAAAaIAAAEAAAAA0QAAAAAAAAMbAG4DGwBuBQ4AmAYbAG0DkQABAd8AaAHWADoB/ABCAawARwM/AHADRQBIAzkAQgROADkEoQBiAuAAhwQsAIUF6wCFAg8AZQetAFcCfgBsAmoAUAORAB4C+wA1A1gAVwTBAGYGgwAlBuEAjQiuAIIGdQAlBvIAbwSXAFkF/QAlBDgAKATAACUFdQBEBaQAMwXgAGQD8wAqCB0AgAUNAHQFEACUBkQAYQbkAEgG0QBXBuAAWwSUAFkFiwCkBQQAOQRyAJMEhQA3CF8AXgJP/6UEnQBlBJQAiAQTADYEIgB4BBIAHwJaAIoCkQBaAdYANAU6AB0E3gAUBOcAHQdtAB0HbQAdBSwAHQbOADgAAAAACCwAVwg1AFwC+gA3AvoAhwL6AEcEKABIBCgATwQoADEEJwBPBCgATwQoADMEKAAvBCgAOAQoAJUEKABPBDEANwRN//8EZAADBf0AHwSI//8EjwBdBFEAIARJADoEdgBjBMAAQQR4AGMEwABABNYAYwYHAGMDugBjBGQAYwPcACACDwB2BNcAYwSiAEkDwwBjBEkAOgSSAEADpwAGA8UAYwSI//8EwABABIj//wOrAEoE4ABjBEIASAXXAEEFjQBBBNEASgWrACAEgwBAB2UAHgdeAGMFuAAgBOAAYwSFAGMFiwAhBnAAFgRKAD4E2gBjBGkAYwTTAB4EbgAbBZAAYwSpAEYGrwBjB18AYwWXAAoGOwBjBHsAYwSDADEGpABjBIMANgQ3AAoG5gAWBL8AYwUWAGMFowAgBiAAQARQ//8E2wADBsMAIASpAEYEqQBjBjEAFQTSAEAETAA+BMAAQASSAEAEAwBHCDsAYwUsACgC+gAwAvoANQL6AEUC+gBGAvoAMwL6AEcC+gBDA9IAjQKqAJAD2wBjBDv/+wStAEkFOQCEBSsAhARHAHEFMACEBEAAcQR1AGMEgwBABG0AYwSs//8CAQCFA50AagAA/JoEBwCDBAf/RQQHAIQEBwCEA8UAYwOdAGoDnQBqAvsARwL7ADUC+wBFAvsARgL7ADMC+wBHAvsAQwVqAFgFkgBYBXIAhAXWAFgF1wBYBGgAjwSCAFgEVwAPBKwALARrAGgELgA8A50AagHZAFoGjgBABKcAYAIb/58ElwA3BJcAYQSXADQElwBUBJcATgSXADMElwBfBJcAVgSXAF8ElwDZAkH/rQJB/60CMQCGAjH//AIxAIYEbQBjBNIATAQ+ADgEkQBvBEYARASYAEQElgBEBJwAPASVAG8EmgBEBFMASASRAEID1ABmBTUAVgPQAAcGUP/XBBQAYwTAAEAFMAA2BNYAYwH+AAADGgBuBVH/7AVR/+wEmP/LBPMAKAK0/+IFYgAHBWIABwViAAcFYgAHBWIABwViAAcFYgAHBTwAVgSAAIIEgACCBIAAggSAAIICVf+6AlUAlQJV/68CVf+tBaYAggWGAFYFhgBWBYYAVgWGAFYFhgBWBUQAdAVEAHQFRAB0BUQAdATyAAIESgBEBEoARARKAEQESgBEBEoARARKAEQESgBEBCwAQgRTAEgEUwBIBFMASARTAEgCMf+oAjEAhgIx/50CMf+bBHsAaQSGAEIEhgBCBIYAQgSGAEIEhgBCBHoAaAR6AGgEegBoBHoAaAQEAAMEBAADBWIABwRKAEQFYgAHBEoARAViAAcESgBEBTwAVgQsAEIFPABWBCwAQgU8AFYELABCBTwAVgQsAEIFMwCCBRgAQgSAAIIEUwBIBIAAggRTAEgEgACCBFMASASAAIIEUwBIBIAAggRTAEgFcwBeBJEARQVzAF4EkQBFBXMAXgSRAEUFcwBeBJEARQWnAIIEegBoAlX/sgIx/6ACVf/UAjH/wgJV/9ICMf/AAlUAFwIfAAMCVQCVBs0AlQQzAG0EeAAoAkH/lwUUAIIERgBvBFUAggIfAH4EVQCCAh8AWwRVAIICtQB+BFUAggL7AH4FpgCCBHsAaQWmAIIEewBpBaYAggR7AGkEe/+SBYYAVgSGAEIFhgBWBIYAQgWGAFYEhgBCBRsAggLrAG8FGwCCAusAUAUbAIIC6wARBOsARQQdADgE6wBFBB0AOATrAEUEHQA4BOsARQQdADgE6wBFBB0AOATzACgCtAAKBPMAKAK0AAoE8wAoAtwACgVEAHQEegBoBUQAdAR6AGgFRAB0BHoAaAVEAHQEegBoBUQAdAR6AGgFRAB0BHoAaAb/ACMF4QAc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BQUEAgcFAgUFBQUFBQUFBQUDAwICAgUFBQUFBQUFBQUFBQQGBAcFBQYFAgMGBgUGAwYGBgYGBgYGBQUFBQMDAwMGBgYGBgYGBgYGBgUFBQUFBQUFBQUFBQICAgIFBQUFBQUFBQUFBQUGBQYFBgUGBQYFBgUGBQYGBQUFBQUFBQUFBQYFBgUGBQYFBgUDAgMCAwIDAgMIBQUDBgUFAgUCBQMFAwYFBgUGBQUGBQYFBgUGAwYDBgMGBQYFBgUGBQYFBgMGAwYDBgUGBQYFBgUGBQYFCAcGBQYFBQUFBQUICAYFBQUFBQUFBQUFBQUEBAQEAgICAgUFBQUFBQUFBQUFBQUFBQUFBQUEBAQEBAUFBQUFAgICAgIEBQQEBAQFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBwUFBQUFBgUGAwYGBgMGBgUFBgMGCAYGBgYGBgMGBQUFAwUFBQYFBQMFBQUHBQUGAwMFBgYGBgYFBQYIBgYGBgYGBgUFBQUFBQUFBQQFAgICBQUIBwgHCAcGBQEDBQMCCAgGBQUGBQUHBwYFCgsGBQYFBgUDCQgDBgUGBQgIBQUGBQUJCAYFBgUGBQYFBgUGBQYFBgUGBQYFBgUIBwUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUFBQUFBQUFBQUFBQUFBQUFAwIDAgYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBgUGBQYFBQYFBgUFBAcFBQYGBQQGBQYFBgUFBQcFBQUFBQUFBQYFBgUGBQUFAwIGBQYDBgUGBgUGBQYFBgUGBQYFBQIICAYFBgYFBgMGBQYDBgYFBgUIBwUFBwUFBgMFBQUFBQQFBQIFBwUFBQUFBQIFBAQFAgIEBQUFBQQEBQcFBQUFBQUFBQUFBQcFBQcHBwUFBwcHBQYFBQUFBAIAAAADAAAAAwAAABwAAwABAAAAHAADAAoAAAaKAAQGbgAAAPQAgAAGAHQAAAACAA0AfgCgAKwArQC/AMYAzwDmAO8A/gEPAREBJQEnATABUwFfAWcBfgF/AY8BkgGhAbAB8AH/AhsCNwJZArwCxwLJAt0C8wMBAwMDCQMPAyMDigOMA5IDoQOwA7kDyQPOA9ID1gQlBC8ERQRPBGIEbwR5BIYEnwSpBLEEugTOBNcE4QT1BQEFEAUTHgEePx6FHvEe8x75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ARAAAAJ6AAABEQAAAREAAACLAAABEgAAASUAAALGAAABJgAAASYAAACMAAABJwAAAScAAAJ8AAABKAAAATAAAALaAAABMQAAATEAAACNAAABMgAAATcAAALjAAABOAAAATgAAACOAAABOQAAAUAAAALpAAABQQAAAUIAAACPAAABQwAAAUkAAALxAAABSgAAAUsAAACRAAABTAAAAVEAAAL4AAABUgAAAVMAAACTAAABVAAAAV8AAAL+AAABYAAAAWEAAAMMAAABYgAAAWUAAAMQAAABZgAAAWcAAAJ9AAABaAAAAX4AAAMUAAABfwAAAX8AAACVAAABjwAAAY8AAACWAAABkgAAAZIAAACXAAABoAAAAaEAAACYAAABrwAAAbAAAACaAAAB8AAAAfAAAAPeAAAB+gAAAfoAAAKFAAAB+wAAAfsAAAKgAAAB/AAAAf8AAAMrAAACGAAAAhkAAAMKAAACGgAAAhsAAAMOAAACNwAAAjcAAACcAAACWQAAAlkAAACdAAACvAAAArwAAAPfAAACxgAAAscAAACeAAACyQAAAskAAACgAAAC2AAAAt0AAAChAAAC8wAAAvMAAACnAAADAAAAAwEAAACoAAADAwAAAwMAAACqAAADCQAAAwkAAACrAAADDwAAAw8AAACsAAADIwAAAyMAAACtAAADhAAAA4UAAACuAAADhgAAA4YAAAOGAAADhwAAA4cAAACwAAADiAAAA4oAAAOHAAADjAAAA4wAAAOKAAADjgAAA5IAAAOLAAADkwAAA5QAAACxAAADlQAAA5cAAAOQAAADmAAAA5gAAACzAAADmQAAA5oAAAOTAAADmwAAA5sAAAC0AAADnAAAA50AAAOVAAADngAAA54AAAC1AAADnwAAA58AAAOXAAADoAAAA6AAAAC2AAADoQAAA6EAAAOYAAADowAAA6MAAAC3AAADpAAAA6UAAAOZAAADpgAAA6YAAAC4AAADpwAAA6cAAAObAAADqAAAA6kAAAC5AAADqgAAA7AAAAOcAAADsQAAA7kAAAC7AAADugAAA7oAAAOjAAADuwAAA7sAAADEAAADvAAAA70AAAOlAAADvgAAA74AAADFAAADvwAAA78AAAOkAAADwAAAA8YAAADGAAADxwAAA8cAAAOnAAADyAAAA8kAAADNAAADygAAA84AAAOoAAAD0QAA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AMQAAwABBAkACQAMAQQAAwABBAkACwAUARAAAwABBAkADAAmASQAAwABBAkADQBcAUoAAwABBAkADgBUAaYAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAAMQAxACAARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAQQBsAGwAIABSAGkAZwBoAHQAcwAgAFIAZQBzAGUAcgB2AGUAZAAuAFIAbwBiAG8AdABvAEIAbwBsAGQAUgBvAGIAbwB0AG8AIABCAG8AbABkAFYAZQByAHMAaQBvAG4AIAAyAC4AMQAzADcAOwAgADIAMAAxADcAUgBvAGIAbwB0AG8ALQBCAG8AbABkAFIAbwBiAG8AdABvACAAaQBzACAAYQAgAHQAcgBhAGQAZQBtAGEAcgBrACAAbwBmACAARwBvAG8AZwBsAGUALgBHAG8AbwBnAGwAZQBHAG8AbwBnAGwAZQAuAGMAbwBtAEMAaAByAGkAcwB0AGkAYQBuACAAUgBvAGIAZQByAHQAcwBvAG4ATABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABBAHAAYQBjAGgAZQAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAyAC4AMABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBwAGEAYwBoAGUALgBvAHIAZwAvAGwAaQBjAGUAbgBzAGUAcwAvAEwASQBDAEUATgBTAEUALQAyAC4AMAADAAAAAAAA/2oAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgAIAAL//wAPAAEAAgAOAAAAAAAAAigAAgBZACUAPgABAEUAXgABAHkAeQABAIEAgQABAIMAgwABAIYAhgABAIkAiQABAIsAlgABAJgAnQABAKQApAABAKgArQADALEAsQABALoAuwABAL8AvwABAMEAwQABAMMAwwABAMcAxwABAMsAywABAM0AzgABANAA0QABANMA0wABANoA3gABAOEA4QABAOUA5QABAOcA6QABAOsA+wABAP0A/QABAP8BAQABAQMBAwABAQgBCQABARYBGgABARwBHAABASABIgABASQBJQADASoBKwABATMBNAABATYBNgABATsBPAABAUEBRAABAUcBSAABAUsBTQABAVEBUQABAVQBWAABAV0BXgABAWIBYgABAWQBZAABAWgBaAABAWoBbAABAW4BbgABAXABcAABAboBugADAbsBwQACAdIB5gABAeoB6gABAfMB8wABAfUB9QABAfwB/gABAgACAQABAgMCAwABAgcCBwABAgkCCwABAhECEQABAhYCGAABAhoCGgABAigCKAABAisCKwABAi0CLQABAjACMwABAl8CYwABAnoC4gABAuUDiwABA40DpAABA6YDsgABA7QDvQABA78D2gABA94D3gABA+AD5wABA+kD6wABA+4D8gABA/QEfAABBH8EfwABBIIEgwABBIUEhgABBIgEiwABBJUE0AABBNIE8QABBPME+gABBPwE/QABBQcFDQABAAEAAgAAAAwAAAAsAAEADgCoAKgAqQCpAKoAqgCrAKsArACsASQBJQEmAScAAQAFAHkApACtAK0BugAAAAEAAAAKADIATAAEREZMVAAaY3lybAAaZ3JlawAabGF0bgAaAAQAAAAA//8AAgAAAAEAAmNwc3AADmtlcm4AFAAAAAEAAAAAAAEAAQACAAYCEAABAAAAAQAIAAEACgAFACQASAABAPoACAAKABQAFQAWABcAGAAZABoAGwAcAB0AJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AGUAZwCBAIMAhACMAI8AkQCTALEAsgCzALQAtQC2ALcAuAC5ALoA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkBLwEzATUBNwE5ATsBQQFDAUUBSQFLAUwBWAFZAZcBnQGiAaUCegJ7An0CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCtgK4AroCvAK+AsACwgLEAsYCyALKAswCzgLQAtIC1ALWAtgC2gLcAt4C4ALiAuMC5QLnAukC6wLtAu8C8QLzAvUC+AL6AvwC/gMAAwIDBAMGAwgDCgMMAw4DEAMSAxQDFgMYAxoDHAMeAyADIgMkAyUDJwMpAysDLQOGA4cDiAOJA4oDiwOMA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPTA9UD1wPZA+4D8APyBAcEDQQTBH0EggSGBQcFCQACAAAAAgAKQXoAAQPuAAQAAAHyB9A8GDwYB/4IYD5QPwg8HkEuPtQIZj92P3Y/Ej9gP3Y/dkEuP6IMBAzSP+xAvkD2PDA92kEUDUg+sj/APNoNjg7EDs4/mD+YPuI/wD/aD9BA3BA2PIpA3BBQP8BBLhCWPRg+UEEuPlARGBIWExgT+hScQNwUoj+YF4gZehqYGrIauBq+Hbgdvh34Hi4euCBCIgwj4j92JTAm2jwwKTw/dj92PJA/dj92P3YqEivAP3Y87iyqLXAuAi5kL0o85C/cPIowsjDcMrY/wDZANn43vDmKP8A4RjjUOP45VDmKPlA+4kC+QNw5sD/APRg85DwwPIo/Ej8SPxI/djwwPIo/dj92QS485DwwPIo8GDnaPBg8GDwYQWo7ZDuyQWQ8DkFMQVJBZEFSQUxBTEFMQUw8AEFSPB5BLkEuQS5BLj/sPlA+UD5QPlA+UD5QPlA8Hj7UPtQ+1D7UP3Y/dj92P3Y/dkEuQS5BLkEuQS492j6yPrI+sj6yPrI+sj6yPNo82jzaPNo/mD7iPuI+4j7iPuJA3EDcPlA+sj5QPrI+UD6yPB48HjwePB5BLj7UPNo+1DzaPtQ82j7UPNo+1DzaP3Y/mD92P3Y/dj92P3Y/Ej9gP2A/YD9gP3Y/mD92P5g/dj+YP5hBLj7iQS4+4kEuPuI/2j/aP9o/7D/sP+xA9j3aQNw92kEUQRRBFEFkQWRBakFSQVJBUkFSQVJBUkFSQWRBZEFkQWRBZEFSQVJBUkFkQUw8DjwOPA48DkFkQWRBZEFqPlA+1D92P3ZBLj3aPlA/CD7UQRQ/dj92PxI/dj92QS4/oj/sPdo8MD92Pdo/mD7iQNw+4j7UPRg/dj92PxI/EjyQPlA/CD0YPtQ/dj92QS4/ojweP+w8MD6yPNo+4j/AQNw8ijzaPORA3ED2QPZA9j3aQNw8GDwYPBg/dj+YPlA+sj7UPNpAvkDcPB492kDcP3Y8MDyKP3Y+UD6yPlA+sj7UPNo82jzaPDA8ikEuPuI+4j/APJBA3DyQQNw8kEDcPlA+sj5QPrI+UD6yPlA+sj5QPrI+UD6yPlA+sj5QPrI+UD6yPlA+sj5QPrI+UD6yPtQ82j7UPNo+1DzaPtQ82j7UPNo+1DzaPtQ82j7UPNo/dj92QS4+4kEuPuJBLj7iQS4+4kEuPuJBLj7iQS4+4j7iPdpA3D3aQNw92kDcP+w9GDzkP5g87j0YPxI92j92P5g+UD6yPtQ/dkEuPuI/2j8IP8BBLkEuP3Y/mD8SPxI/YD92P5g/dj+YQS4/oj/AP9o/7EC+QNxAvkDcQPZBFEEuQVJBZEFSQUxBakFMQVJBZEFqAAIApQAEAAQAAAAGAAYAAQALAAwAAgATABMABAAlACoABQAsAC0ACwAvADYADQA4ADgAFQA6AD8AFgBFAEYAHABJAEoAHgBMAEwAIABPAE8AIQBRAFQAIgBWAFYAJgBYAFgAJwBaAF0AKABfAF8ALACKAIoALQCWAJYALgCdAJ0ALwCxALUAMAC3ALkANQC7ALsAOAC9AL0AOQDAAMEAOgDDAMMAPADFAMUAPQDHAM4APgDSANIARgDUAN4ARwDgAO8AUgDxAPEAYgD2APgAYwD7APwAZgD+AQAAaAEDAQUAawEKAQoAbgENAQ0AbwEYARoAcAEiASIAcwEuATAAdAEzATUAdwE3ATcAegE5ATkAewE7ATsAfAFDAUQAfQFUAVQAfwFWAVYAgAFYAVgAgQFcAV4AggGEAYUAhQGHAYkAhwHYAdgAigHaAdsAiwHdAd0AjQHgAeEAjgHrAe0AkAH/Af8AkwIOAhAAlAIwAjAAlwIzAjMAmAJFAkUAmQJHAkgAmgJ6AnsAnAJ9An0AngJ/ApQAnwKZAqAAtQKiAqUAvQKqAq8AwQK0ArwAxwK+Ar4A0ALAAsAA0QLCAsIA0gLEAsQA0wLGAs8A1ALYAtoA3gLcAtwA4QLeAt4A4gLgAuAA4wLiAuIA5ALnAucA5QLpAukA5gLrAusA5wLtAu0A6ALvAu8A6QLxAv0A6gL/Av8A9wMBAwEA+AMDAwMA+QMOAw4A+gMQAxAA+wMSAxIA/AMgAyAA/QMiAyUA/gMnAycBAgMpAykBAwMvAzgBBANDA0cBDgNNA08BEwNUA1QBFgNlA2kBFwNtA28BHAN4A3gBHwOGA4sBIAOOA50BJgOgA6ABNgOkA6QBNwOmA6YBOAOqA6oBOQOtA64BOgOwA7EBPAOzA7kBPgO7A70BRQO/A8QBSAPGA8cBTgPJA8wBUAPSA9MBVAPVA9UBVgPXA9cBVwPZA9wBWAPfA+QBXAPmA+YBYgPqA+sBYwPwA/ABZQPyA/sBZgP+A/8BcAQBBAQBcgQLBAwBdgQQBBABeAQSBBgBeQQeBEYBgARIBEgBqQRKBFcBqgRfBF8BuARwBHUBuQR3BHcBvwR7BHwBwAR/BH8BwgSBBIIBwwSEBIQBxQSGBIYBxgSXBJsBxwSdBJ0BzASfBKABzQSiBKIBzwSmBKgB0ASqBKoB0wSsBK4B1ASwBLAB1wSyBLIB2AS0BLoB2QS8BLwB4AS/BL8B4QTCBMYB4gTIBMgB5wTKBMsB6ATPBM8B6gTSBNIB6wTYBNgB7ATdBN0B7QToBOgB7gTqBOoB7wTxBPEB8AT1BPUB8QALADj/xADS/8QA1v/EATn/xAFF/8QDDv/EAxD/xAMS/8QDwf/EBHf/xAS//8QAGAA6ABQAOwAmAD0AFgEZABQCmQAWAyAAJgMiABYDJAAWA4sAFgOaABYDnQAWA9MAJgPVACYD1wAmA9kAFgPqABQD8gAWBHAAFgRyABYEdAAWBIYAFgTCABQExAAUBMYAJgABABP/CADnABD+7gAS/u4AJf9AAC7/MAA4ABQARf/eAEf/6wBI/+sASf/rAEv/6wBT/+sAVf/rAFb/5gBZ/+oAWv/oAF3/6ACU/+sAmf/rAJv/6gCy/0AAtP9AALv/6wC9/+gAyP/rAMn/6wDL/+oA0gAUANYAFAD3/+sBA//rAQ3/QAEY/+sBGv/oAR7/6wEi/+sBOQAUAUL/6wFFABQBYP/rAWH/6wFr/+sBhv7uAYr+7gGO/u4Bj/7uAev/wAHt/8ACM//AAn//QAKA/0ACgf9AAoL/QAKD/0AChP9AAoX/QAKa/94Cm//eApz/3gKd/94Cnv/eAp//3gKg/94Cof/rAqL/6wKj/+sCpP/rAqX/6wKr/+sCrP/rAq3/6wKu/+sCr//rArD/6gKx/+oCsv/qArP/6gK0/+gCtf/oArb/QAK3/94CuP9AArn/3gK6/0ACu//eAr3/6wK//+sCwf/rAsP/6wLF/+sCx//rAsn/6wLL/+sCzf/rAs//6wLR/+sC0//rAtX/6wLX/+sC5f8wAvn/6wL7/+sC/f/rAw4AFAMQABQDEgAUAxX/6gMX/+oDGf/qAxv/6gMd/+oDH//qAyP/6AMy/8ADM//AAzT/wAM1/8ADNv/AAzf/wAM4/8ADTf/AA07/wANP/8ADhv9AA47/QAOe/+sDov/qA6T/6wOm/+gDqf/qA6r/6wOr/+oDsv8wA7b/QAPBABQDw//eA8T/6wPG/+sDyP/rA8n/6APL/+sD0v/oA9r/6APi/0AD4//eA+b/6wPr/+gD7P/rA/H/6wPz/+gD+P9AA/n/3gP6/0AD+//eA///6wQB/+sEAv/rBAz/6wQO/+sEEP/rBBT/6AQW/+gEGP/oBB3/6wQe/0AEH//eBCD/QAQh/94EIv9ABCP/3gQk/0AEJf/eBCb/QAQn/94EKP9ABCn/3gQq/0AEK//eBCz/QAQt/94ELv9ABC//3gQw/0AEMf/eBDL/QAQz/94ENP9ABDX/3gQ3/+sEOf/rBDv/6wQ9/+sEP//rBEH/6wRD/+sERf/rBEv/6wRN/+sET//rBFH/6wRT/+sEVf/rBFf/6wRZ/+sEW//rBF3/6wRf/+sEYf/rBGP/6gRl/+oEZ//qBGn/6gRr/+oEbf/qBG//6gRx/+gEc//oBHX/6AR3ABQEmf9ABJr/3gSc/+sEoP/rBKT/6gSp/+sEq//rBL8AFATD/+gExf/oBMv/wATS/8AE6v/AADMAOP/fADr/5AA7/+wAPf/dANL/3wDW/98BGf/kATn/3wFF/98B6wAOAe0ADgIzAA4Cmf/dAw7/3wMQ/98DEv/fAyD/7AMi/90DJP/dAzIADgMzAA4DNAAOAzUADgM2AA4DNwAOAzgADgNNAA4DTgAOA08ADgOL/90Dmv/dA53/3QPB/98D0//sA9X/7APX/+wD2f/dA+r/5APy/90EcP/dBHL/3QR0/90Ed//fBIb/3QS//98Ewv/kBMT/5ATG/+wEywAOBNIADgTqAA4AHQA4/84AOv/tAD3/0ADS/84A1v/OARn/7QE5/84BRf/OApn/0AMO/84DEP/OAxL/zgMi/9ADJP/QA4v/0AOa/9ADnf/QA8H/zgPZ/9AD6v/tA/L/0ARw/9AEcv/QBHT/0AR3/84Ehv/QBL//zgTC/+0ExP/tABEALv/uADn/7gKV/+4Clv/uApf/7gKY/+4C5f/uAxT/7gMW/+4DGP/uAxr/7gMc/+4DHv/uA7L/7gRi/+4EZP/uBMH/7gBNAAYAEAALABAADQAUAEEAEgBH/+gASP/oAEn/6ABL/+gAVf/oAGEAEwCU/+gAmf/oALv/6ADI/+gAyf/oAPf/6AED/+gBHv/oASL/6AFC/+gBYP/oAWH/6AFr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/+sAw//pAMX/8ADG/+cAyP/cAMn/3ADK/+MAy//dAMz/zgDN/9QAzv/bAOz/wQDw/8EA8f/BAPP/wQD0/8EA9f/BAPf/3AD4/8EA+v/BAPv/wQD+/8EBAP/BAQP/3AEF/8EBGP/WARr/4QEe/9wBIv/cASv/wQE2/8EBPP/BAT7/wQFC/9wBU//BAVX/wQFX/8EBXP/BAWD/3AFh/9wBa//cAqH/3AKi/9wCo//cAqT/3AKl/9wCqv/BAqv/1gKs/9YCrf/WAq7/1gKv/9YCsP/dArH/3QKy/90Cs//dArT/4QK1/+ECvf/cAr//3ALB/9wCw//cAsX/3ALH/9wCyf/cAsv/3ALN/9wCz//cAtH/3ALT/9wC1f/cAtf/3ALy/8EC9P/BAvb/wQL3/8EC+f/WAvv/1gL9/9YDFf/dAxf/3QMZ/90DG//dAx3/3QMf/90DI//hA57/3AOg/8EDov/dA6T/1gOm/+EDqf/dA6r/1gOr/90DxP/cA8X/wQPG/9YDx//BA8j/3APJ/+EDy//cA8z/wQPR/8ED0v/hA9r/4QPh/8ED5v/cA+f/wQPr/+ED7P/cA/H/3APz/+ED///cBAH/3AQC/9wECP/BBAr/wQQM/9YEDv/cBBD/1gQU/+EEFv/hBBj/4QQc/8EEHf/cBDf/3AQ5/9wEO//cBD3/3AQ//9wEQf/cBEP/3ARF/9wES//WBE3/1gRP/9YEUf/WBFP/1gRV/9YEV//WBFn/3ARb/9wEXf/cBF//1gRh/9wEY//dBGX/3QRn/90Eaf/dBGv/3QRt/90Eb//dBHH/4QRz/+EEdf/hBHz/wQSY/8EEnP/cBKD/1gSk/90Eqf/cBKv/3AS1/8EEt//BBMP/4QTF/+EAfAAG/9oAC//aAEf/8ABI//AASf/wAEv/8ABV//AAWf/vAFr/3ABd/9wAlP/wAJn/8ACb/+8Au//wAL3/3ADC/+wAxAAPAMb/6gDI//AAyf/wAMr/zgDL/+8AzP/nAPf/8AED//ABGv/cAR7/8AEi//ABQv/wAWD/8AFh//ABa//wAYT/2gGF/9oBh//aAYj/2gGJ/9oCof/wAqL/8AKj//ACpP/wAqX/8AKw/+8Csf/vArL/7wKz/+8CtP/cArX/3AK9//ACv//wAsH/8ALD//ACxf/wAsf/8ALJ//ACy//wAs3/8ALP//AC0f/w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AxL/0gMi/9MDI//mAyT/0wOL/9MDmv/TA5v/9AOd/9MDpv/mA7X/7QPB/9IDwv/0A8n/5gPK/+8D0v/mA9n/0wPa/+YD2//KA9z/ygPf/8oD6v/UA+v/5gPy/9MD8//mA/X/9AP2/+8EA//0BAT/7wQT/+0EFP/mBBX/7QQW/+YEF//tBBj/5gQZ/+EEcP/TBHH/5gRy/9MEc//mBHT/0wR1/+YEd//SBHn/4QSG/9MEv//SBML/1ATD/+YExP/UBMX/5gByAAb/wAAL/8AAOP+dADr/xwA8//AAPf+rAFH/0gBS/9IAVP/SAMH/0gDS/50A1P/1ANb/nQDa//AA3f/1AN7/6gDh/+UA5v/BAOz/0gDw/9IA8f/SAPP/0gD0/9IA9f/SAPb/zQD4/9IA+v/SAPv/0gD+/9IBAP/SAQX/0gEZ/8cBK//SATP/8AE2/9IBOf+dATr/zAE8/9IBPv/SAUP/8AFF/50BR//lAUn/5QFM/98BUP/1AVP/0gFV/9IBV//SAVz/0gFd//ABYv/OAWT/6gFm//UBbP+eAW3/zgFv//UBhP/AAYX/wAGH/8ABiP/AAYn/wAKZ/6sCqv/SAvL/0gL0/9IC9v/SAvf/0gMO/50DEP+dAxL/nQMi/6sDJP+rA4v/qwOa/6sDm//wA53/qwOg/9IDtf/qA8H/nQPC//ADxf/SA8f/0gPM/9ID0f/SA9n/qwPb/8AD3P/AA9//wAPh/9ID5//SA+r/xwPy/6sD9f/wBAP/8AQI/9IECv/SBBP/6gQV/+oEF//qBBn/5QQc/9IEcP+rBHL/qwR0/6sEd/+dBHn/5QR8/9IEhv+rBJj/0gS1/9IEt//SBL//nQTC/8cExP/HAHUABv+xAAv/sQA4/54AOv/FADz/8gA9/6gAUf/PAFL/zwBU/88AXP/vAMH/zwDS/54A1v+eANr/8gDe/+wA4f/hAOb/wgDs/88A7v/vAPD/zwDx/88A8//PAPT/zwD1/88A9v/GAPj/zwD6/88A+//PAP7/zwEA/88BBf/PARn/xQEr/88BM//yATT/7wE2/88BOf+eATr/wAE8/88BPv/PAUP/8gFE/+8BRf+eAUf/4QFJ/+EBTP/fAVP/zwFV/88BV//PAVz/zwFd//IBXv/vAWL/zQFk/+gBbP+fAW3/xgGE/7EBhf+xAYf/sQGI/7EBif+xApn/qAKq/88C8v/PAvT/zwL2/88C9//PAw7/ngMQ/54DEv+eAyL/qAMk/6gDi/+oA5r/qAOb//IDnf+oA6D/zwO1/+wDwf+eA8L/8gPF/88Dx//PA8r/7wPM/88D0f/PA9n/qAPb/7ED3P+xA9//sQPh/88D5//PA+r/xQPy/6gD9f/yA/b/7wQD//IEBP/vBAj/zwQK/88EE//sBBX/7AQX/+wEGf/hBBz/zwRw/6gEcv+oBHT/qAR3/54Eef/hBHz/zwSG/6gEmP/PBLX/zwS3/88Ev/+eBML/xQTE/8UAUwA4/74AUf/hAFL/4QBU/+EAWv/vAF3/7wC9/+8Awf/hANL/vgDW/74A5v/JAOz/4QDw/+EA8f/hAPP/4QD0/+EA9f/hAPb/3wD4/+EA+v/hAPv/4QD+/+EBAP/hAQX/4QEJ/+0BGv/vASD/6wEr/+EBNv/hATn/vgE6/98BPP/hAT7/4QFF/74BTP/pAVP/4QFV/+EBV//hAVz/4QFj//UBbf/gAqr/4QK0/+8Ctf/vAvL/4QL0/+EC9v/hAvf/4QMO/74DEP++AxL/vgMj/+8DoP/hA6b/7wPB/74Dxf/hA8f/4QPJ/+8DzP/hA9H/4QPS/+8D2v/vA+H/4QPn/+ED6//vA/P/7wQI/+EECv/hBBT/7wQW/+8EGP/vBBz/4QRx/+8Ec//vBHX/7wR3/74EfP/hBJj/4QS1/+EEt//hBL//vgTD/+8Exf/vAGoAOP/mADr/5wA8//IAPf/nAFH/1gBS/9YAVP/WAFz/8QDB/9YA0v/mANb/5gDa//IA3v/uAOH/6ADm/+YA7P/WAO7/8QDw/9YA8f/WAPP/1gD0/9YA9f/WAPb/0AD4/9YA+v/WAPv/1gD+/9YBAP/WAQX/1gEZ/+cBK//WATP/8gE0//EBNv/WATn/5gE6/84BPP/WAT7/1gFD//IBRP/xAUX/5gFH/+gBSf/oAVP/1gFV/9YBV//WAVz/1gFd//IBXv/xAWL/5wFk/+0BbP/mAW3/0AKZ/+cCqv/WAvL/1gL0/9YC9v/WAvf/1gMO/+YDEP/mAxL/5gMi/+cDJP/nA4v/5wOa/+cDm//yA53/5wOg/9YDtf/uA8H/5gPC//IDxf/WA8f/1gPK//EDzP/WA9H/1gPZ/+cD4f/WA+f/1gPq/+cD8v/nA/X/8gP2//EEA//y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AN3/5ADe/+kA7f/kAPL/6wEE/+sBM//kATn/4gFD/+QBRf/iAVD/5AFR/+sBXf/kAWb/5AFv/+QBcP/rAw7/4gMQ/+IDEv/iA5v/5AO1/+kDwf/iA8L/5AP1/+QEA//kBBP/6QQV/+kEF//pBHf/4gS//+IAGAA4/+sAPf/zANL/6wDW/+sBOf/rAUX/6wKZ//MDDv/rAxD/6wMS/+sDIv/zAyT/8wOL//MDmv/zA53/8wPB/+sD2f/zA/L/8wRw//MEcv/zBHT/8wR3/+sEhv/zBL//6wA5AFH/7wBS/+8AVP/vAFz/8ADB/+8A7P/vAO3/7gDu//AA8P/vAPH/7wDz/+8A9P/vAPX/7wD2/+4A+P/vAPr/7wD7/+8A/v/vAQD/7wEF/+8BCf/0ASD/8QEr/+8BNP/wATb/7wE6/+8BPP/vAT7/7wFE//ABU//vAVX/7wFX/+8BXP/vAV7/8AFt/+8Cqv/vAvL/7wL0/+8C9v/vAvf/7wOg/+8Dxf/vA8f/7wPK//ADzP/vA9H/7wPh/+8D5//vA/b/8AQE//AECP/vBAr/7wQc/+8EfP/vBJj/7wS1/+8Et//vACQABv/yAAv/8gBa//UAXf/1AL3/9QD2//QA/v/0AQn/9QEa//UBOv/1AW3/9QGE//IBhf/yAYf/8gGI//IBif/yArT/9QK1//UDI//1A6b/9QPJ//UD0v/1A9r/9QPb//ID3P/yA9//8gPr//UD8//1BBT/9QQW//UEGP/1BHH/9QRz//UEdf/1BMP/9QTF//UANQBR/+4AUv/uAFT/7gDB/+4A7P/uAO0AFADw/+4A8f/uAPP/7gD0/+4A9f/uAPb/7QD4/+4A+f/tAPr/7gD7/+4A/P/QAP7/7gEA/+4BBf/uASv/7gE2/+4BOv/tATz/7gE+/+4BSP/tAUr/7QFT/+4BVf/uAVf/7gFc/+4Bbf/tAqr/7gLy/+4C9P/uAvb/7gL3/+4DoP/uA8X/7gPH/+4DzP/uA9H/7gPh/+4D5//uBAj/7gQK/+4EGv/tBBz/7gR6/+0EfP/uBJj/7gS1/+4Et//uAAoABv/1AAv/9QGE//UBhf/1AYf/9QGI//UBif/1A9v/9QPc//UD3//1AHYAR//wAEj/8ABJ//AAS//wAFP/xwBV//AAlP/wAJn/8AC7//AAyP/wAMn/8AD3//ABA//wARj/xwEc/+sBHv/wASL/8AFC//ABYP/wAWH/8AFr//AB2//rAd3/6wHl/+kB7P/rAfX/6wIR/+sCGv/rAjH/6wKh//ACov/wAqP/8AKk//ACpf/wAqv/xwKs/8cCrf/HAq7/xwKv/8cCvf/wAr//8ALB//ACw//wAsX/8ALH//ACyf/wAsv/8ALN//ACz//wAtH/8ALT//AC1f/wAtf/8AL5/8cC+//HAv3/xwM5/+sDQ//rA0T/6wNF/+sDRv/rA0f/6wNQ/+sDUf/rA1L/6wNT/+sDWv/rA1v/6wNc/+sDXf/rA23/6wNu/+sDb//rA57/8AOk/8cDqv/HA8T/8APG/8cDyP/wA8v/8APm//AD7P/wA/H/8AP///AEAf/wBAL/8AQM/8cEDv/wBBD/xwQd//AEN//wBDn/8AQ7//AEPf/wBD//8ARB//AEQ//wBEX/8ARL/8cETf/HBE//xwRR/8cEU//HBFX/xwRX/8cEWf/wBFv/8ARd//AEX//HBGH/8ASc//AEoP/HBKn/8ASr//AEz//rBPH/6wT0/+sE+f/rAOIABgANAAsADQBF//AAR//AAEj/wABJ/8AASgANAEv/wABT/+IAVf/AAFoACwBdAAsAlP/AAJn/wAC7/8AAvQALAMf/1gDI/8AAyf/AAMz/1QDt/8gA8v/XAPf/wAED/8ABBP/XARj/4gEaAAsBHP/sAR7/wAEgAAwBIv/AAUL/wAFR/9cBYP/AAWH/wAFjAAsBZQALAWv/wAFw/9cBhAANAYUADQGHAA0BiAANAYkADQHTAA0B1gANAdgADgHZ//UB2//sAd3/7QHl/+wB6/+/Aez/7QHt/78B9AAOAfX/7QH4AA4CEAAOAhH/7QISAA0CFAAOAhr/7QIx/+4CM/+/Apr/8AKb//ACnP/wAp3/8AKe//ACn//wAqD/8AKh/8ACov/AAqP/wAKk/8ACpf/AAqv/4gKs/+ICrf/iAq7/4gKv/+ICtAALArUACwK3//ACuf/wArv/8AK9/8ACv//AAsH/wALD/8ACxf/AAsf/wALJ/8ACy//AAs3/wALP/8AC0f/AAtP/wALV/8AC1//AAvn/4gL7/+IC/f/iAyMACwMy/78DM/+/AzT/vwM1/78DNv+/Azf/vwM4/78DOf/tA0P/7QNE/+0DRf/tA0b/7QNH/+0DTAANA03/vwNO/78DT/+/A1D/7QNR/+0DUv/tA1P/7QNa/+0DW//tA1z/7QNd/+0Dbf/tA27/7QNv/+0Dc//1A3T/9QN1//UDdv/1A3gADgOBAA0DggANA57/wAOk/+IDpgALA6r/4gPD//ADxP/AA8b/4gPI/8ADyQALA8v/wAPSAAsD2gALA9sADQPcAA0D3wANA+P/8APm/8AD6wALA+z/wAPx/8AD8wALA/n/8AP7//AD///ABAH/wAQC/8AEDP/iBA7/wAQQ/+IEFAALBBYACwQYAAsEHf/ABB//8AQh//AEI//wBCX/8AQn//AEKf/wBCv/8AQt//AEL//wBDH/8AQz//AENf/wBDf/wAQ5/8AEO//ABD3/wAQ//8AEQf/ABEP/wARF/8AES//iBE3/4gRP/+IEUf/iBFP/4gRV/+IEV//iBFn/wARb/8AEXf/ABF//4gRh/8AEcQALBHMACwR1AAsEmv/wBJz/wASg/+IEqf/ABKv/wATDAAsExQALBMv/vwTP/+0E0AANBNL/vwTeAA0E4QANBOr/vwTx/+0E9P/tBPUADgT5/+0E+gANAA8A7QAUAPIAEAD2//AA+f/wAP7/8AEBABYBBAAQATr/5gFI//ABSv/cAVEAEAFt//ABcAAQBBr/8AR6//AATwBH/+4ASP/uAEn/7gBL/+4AVf/uAJT/7gCZ/+4Au//uAMj/7gDJ/+4A7QASAPIADgD2/+MA9//uAPn/4wD8/7gA/v/jAQP/7gEEAA4BHv/uASL/7gE6/7oBQv/uAUj/4wFK/9kBUQAOAWD/7gFh/+4Ba//uAW3/4wFwAA4Cof/uAqL/7gKj/+4CpP/uAqX/7gK9/+4Cv//uAsH/7gLD/+4Cxf/uAsf/7gLJ/+4Cy//uAs3/7gLP/+4C0f/uAtP/7gLV/+4C1//uA57/7gPE/+4DyP/uA8v/7gPm/+4D7P/uA/H/7gP//+4EAf/uBAL/7gQO/+4EGv/jBB3/7gQ3/+4EOf/uBDv/7gQ9/+4EP//uBEH/7gRD/+4ERf/uBFn/7gRb/+4EXf/uBGH/7gR6/+MEnP/uBKn/7gSr/+4AIgBa/8AAXf/AAL3/wAD2/4AA+f/uAP7/8AEJ/9sBGv/AASD/3AE6/0cBSP/uAUr/7gFjAAcBZf/0AW3/fwK0/8ACtf/AAyP/wAOm/8ADyf/AA9L/wAPa/8AD6//AA/P/wAQU/8AEFv/ABBj/wAQa/+4Ecf/ABHP/wAR1/8AEev/uBMP/wATF/8AAIwBa//QAXP/wAF3/9AC9//QA7f/vAO7/8ADy//MA/v/uAQT/8wEa//QBNP/wAUT/8AFR//MBXv/wAXD/8wK0//QCtf/0AyP/9AOm//QDyf/0A8r/8APS//QD2v/0A+v/9APz//QD9v/wBAT/8AQU//QEFv/0BBj/9ARx//QEc//0BHX/9ATD//QExf/0AAoABv/WAAv/1gGE/9YBhf/WAYf/1gGI/9YBif/WA9v/1gPc/9YD3//WABUAXP/gAO7/4AD2/3YA+f/CAP7/0wEJ/9kBIP/bATT/4AE6/x4BRP/gAUj/wgFK/+0BXv/gAWP/8AFl//IBbf9WA8r/4AP2/+AEBP/gBBr/wgR6/8IADQD2/2QA+f/SAP7/2QEJ/9kBIP/bATr/HgFI/9IBSv/tAWP/8AFl//IBbf9WBBr/0gR6/9IACQD2/2oA/v/GAQn/2QEg/9sBOv8eAUr/7QFj//ABZf/yAW3/VgAKAAb/1wAL/9cBhP/XAYX/1wGH/9cBiP/XAYn/1wPb/9cD3P/XA9//1wBiAEf/mABI/5gASf+YAEv/mABT/3AAVf+YAFf/GABbAAsAlP+YAJn/mAC7/5gAyP+YAMn/mAD3/5gBA/+YARj/cAEe/5gBIv+YAUL/mAFg/5gBYf+YAWv/mAHB/xgCof+YAqL/mAKj/5gCpP+YAqX/mAKr/3ACrP9wAq3/cAKu/3ACr/9wAr3/mAK//5gCwf+YAsP/mALF/5gCx/+YAsn/mALL/5gCzf+YAs//mALR/5gC0/+YAtX/mALX/5gC+f9wAvv/cAL9/3ADBf8YAwf/GAMJ/xgDC/8YAw3/GAOe/5gDpP9wA6r/cAPE/5gDxv9wA8j/mAPL/5gDzf8YA+b/mAPs/5gD8f+YA///mAQB/5gEAv+YBAz/cAQO/5gEEP9wBB3/mAQ3/5gEOf+YBDv/mAQ9/5gEP/+YBEH/mARD/5gERf+YBEv/cARN/3AET/9wBFH/cART/3AEVf9wBFf/cARZ/5gEW/+YBF3/mARf/3AEYf+YBJz/mASg/3AEqf+YBKv/mAS+/xgAEwHT/+4B1f/1Adb/8QHY//IB9P/yAfj/8gIQ//ICEv/uAhT/8gNM/+4DeP/yA4D/9QOB/+4Dgv/uBND/7gTe/+4E4f/uBPX/8gT6/+4AEwHT/+UB1f/xAdb/6wHY/+kB9P/pAfj/6QIQ/+kCEv/lAhT/6QNM/+UDeP/pA4D/8QOB/+UDgv/lBND/5QTe/+UE4f/lBPX/6QT6/+UAAwHV//UB1v/uA4D/9QACAdb/twHb//AAAQBbAAsABAAN/+YAQf/0AGH/7wFN/+0AFgC4/9QAwv/tAMQAEQDK/+AAzP/nAM3/5QDO/+4A2QASAOr/6QD2/9cBOv/XAUr/0wFM/9YBTf/FAVj/5wFiAA0BZAAMAW3/1gFu//IB2//pAeX/5wIx/+kAAQEc//EAEgDZ/64A5gASAOv/4ADt/60A7//WAP3/3wEB/9IBB//gARz/zgEu/90BMP/iATj/4AFA/+ABSv/pAU3/2gFf/70Baf/fAWwAEQACAPb/9QGF/8AAAgDt/2gBHP/uAAoA5v/DAPb/zwD+/9QBOv/OAUn/5wFM/98BYv/RAWT/7AFs/6ABbf/RADAAVv9+AFv/nQBt/vEAfP70AIH+qwCG/14Aif9LALj/cgC//w8Aw/8KAMb/QQDH/wcAyv9oAMz/DwDN/w4Azv8MANn/YwDmAAUA6v+9AOv/SQDt/v4A7/8TAPb/aAD9/w4A/v9oAP//EwEB/wcBAgAwAQf/DgEJ/xEBHP7nASD/rAEu/xUBMP88ATj/DgE6/2oBQP9JAUr/DAFM/z8BTf7xAVj/wAFf/u8BY/8xAWX/XwFp/woBbAAFAW3/MAFu/9UAHQAK/+IADQAUAA7/zwBBABIASv/qAFb/2ABY/+oAYQATAG3/rgB8/80Agf+gAIb/wQCJ/8AAuP/QALz/6gC//8YAwAANAML/6QDD/9YAxv/oAMf/ugDK/+kAzP/LAM3/2gDO/8cBjf/TAdv/ywHl/8sCMf/NABgAI/+vAFj/7wBb/98Amv/uALj/5QC5/9EAxAARAMr/yADZABMA5v/FAPb/ygD+/9ABOv+BAUn/ZQFK/4UBTP9mAU3/3QFY//IBYv+xAWT/ygFs/6kBbf/IAdb/zQHl//UACAD2//AA/v/wAQn/8QEg//MBOv/xAWP/8wFl//MBbf/xAAMASv/uAFv/6gHW//AACQDK/+oA7f+4APb/4gEJ//ABIP/xATr/6wFj//UBbf/sAYX/kAACAREACwFs/+YAEwBb/8EAuP/FAMr/tADq/9cA9v+5AP7/6QEJ/7IBHP/SASD/yAE6/6ABSv/FAVj/5AFj/8wBZf/MAW3/ywFu/+8B2//nAeX/5gIx/+gABQBb/8wB1v+4Adv/8gHl//ECMf/zAAgA2QAVAO0AFQFJ/+QBSv/lAUz/5AFi/+MBZP/iAWz/5AACAPb/1gGF/4gABwBYAA4Agf7XAMT/mADH/8cA2f8SAO3/UgFf/88ABgDK/+oA7f/uAPb/1gD+/+0BOv/sAW3/7AAEAEoAFABYADIAWwARAYUAEAA0AAT/xABW/78AW//RAG3/bAB8/24Agf9DAIb/rACJ/6EAuP+4AL//fgDD/3sAxv+bAMf/eQDK/7IAzP9+AM3/fQDO/3wA2f+vAOYADwDq/+QA6/+gAO3/dADv/4AA9v+yAP3/fQD+/7IA//+AAQH/eQECACgBB/99AQn/fwEc/2YBIP/aAS7/gQEw/5gBOP99ATr/swFA/6ABSv98AUz/mgFN/2wBWP/mAV//awFj/5IBZf+tAWn/ewFsAA8Bbf+RAW7/8gHb/7kB5f+5AjH/uQAHAA0AFABBABEAVv/iAGEAEwHb/9kB5f/ZAjH/2QAGAEoADQDGAAsAx//qAMoADADt/8gBHP/xAAcADQAPAEEADABW/+sAYQAOAdv/5wHl/+cCMf/pAAYAW//lALj/ywDN/+QB2//sAeX/6wIx/+0ABwCB/98Atf/zALf/8ADE/+oA2f/fAOb/4AFs/+AAAQHb/+sABAHW/8cB2//yAeX/8gIx//IAAQHW//EAAQHWAA0AAgsMAAQAAA6sF2gAJgAlAAAAAAAAAAAAAAAAABIAAAAAAAAAAP/j/+QAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAEQAAABEAAAAAAAAAAP/k/+UAAAAAAAAAAAAAAAAAAAAAAAD/6wAAAAAAAAAA/6v/1f/tAAAAAAAA/+oAAP/pAAAAAAAAAAAAAP/h/4YAAP/1/+oAAAAAAAAAAAAAAAAAAAAAAAD/6//Q//T/9QAAAAD/9f/O/+//iP9qAAAAAAAMAAAAAP/xAAD/iAAA/9n/xP/HABEAAAASAAD/swAAAAD/yf/fAAAAAP/dAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAA//AAAAAAAAAAAP+o/+sAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+0AAAAA/+3/7wAAAAAAAP/mAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/tAAAAAAAAAAAAAAAAAAAAAAAA//EAAAAAAAAAAAAAAAAAAAAAAAAAAP/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAAAAAAAAAD/8QAAAAAAAAAA/+P/8QAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAAAAAAAAAAAAAAAAAAAAAAD/8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8wAAAAD/8QAAAAD/8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAP9Z/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/6gAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+b/4QAA/+X/6QAAAAD/5//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1wAAP+jAAAAAAAAAAD/v//j/9j/v//Z/2r/wf/L/+z/oAARABL/q//G/+L/8AANAAAAAAAA/+kAEQAA//MAAP8ZAAD/7wASAAD/aAAAAAAAAP+g//MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+r/7gAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAA/6f/5P+n/zD/v/+I/1j/uf+uAAAAEAAQ/6//tP/E//AAAAAAAAAAAP+zAA8AAP/x/8v+/v9+/+0AEP+8/vAAAP98AAD/KP/xAAAAAAAAAAAAAAAAAAAAAP/yAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAP+//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9gAAP/wAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+v/5gAA/+v/7QANAAD/7P/lAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/5v/nAAD/6//rAAAAAP/n/+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAABEAAAAOAAD/ZAAA/9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7QAAAAD/3AAAAAD/4gAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAP9TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/zAAAAAP/zAAD/Tv/1AAAADwAAAAAAAP+AAAAAAAAA/80AAP/cAAAAAAAAAAAAAP9v/mz/pwAAAAAAAAAAAAAAAAAA/0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AAAAAAP/yABMAAP/y/4X/6P8z/ukAEwAAAAAAAAAA/+4AAP7gAAD/o/+3/70AAAAAAAAAAP8yAAAAAAAAAAAAAAAA/9cAAP/FAAD/7P+lAAD/iP/OAAAAAAAAAAAAAAAA/6QAAAAAAAAAAAAA/9sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/YAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAAAAD/4f/t/9X/3//nAAAAAAAOAAD/ywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9xAAAAAAAAAAD/xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+X/yQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+gAAAAAAAAAAP/zAAAAAAAA/9T/8wAA/9L/5P+1/9L/2f/1AAAAAAAA/7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/KQAAAAAAAAAA/2MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/tQAAAAAAAAAAAAAAAAAAAAAAAAAA/3n/6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/n/+tAAAAAAAAAAAAAAAAAAD/wP/JAAAAAAAAAAAAAAAAAAD/yAAAAAD/5wAA/+sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9V/73/Vf9m/37/M/9fAAD/YQAAAAcABwAA/2v/hv/RAAAAAAAAAAD/agAFAAAAAP+S/jb/DwAAAAcAAP4eAAD/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/vAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAP+0/7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9UAAP+9/+n/rv+9AAD/pf+vAAAAAAAAABIAEgAA/9IAAAAAAAAAAAAAAAAAAAAAAAAAAP/K/nf/uwAAAAAAAP85AAD/6QAAAAAAAAACAJoABgAGAAAACwALAAEAEAAQAAIAEgASAAMAJQApAAQALAA0AAkAOAA+ABIARQBHABkASQBJABwATABMAB0AUQBUAB4AVgBWACIAWgBaACMAXABeACQAigCKACcAlgCWACgAsQC0ACkAvQC9AC0AwQDBAC4AxwDHAC8A1ADVADAA1wDXADIA2gDaADMA3ADeADQA4ADmADcA7ADsAD4A7gDuAD8A9wD3AEAA/AD8AEEA/gD/AEIBBAEFAEQBCgEKAEYBDQENAEcBGAEaAEgBLgEwAEsBMwE1AE4BNwE3AFEBOQE5AFIBOwE7AFMBQwFEAFQBVAFUAFYBVgFWAFcBWAFYAFgBXAFeAFkBhAGKAFwBjgGPAGMB2AHYAGUB3QHdAGYB4AHhAGcB6wHtAGkB/wH/AGwCDgIQAG0CMAIwAHACMwIzAHECRQJFAHICRwJIAHMCegJ7AHUCfQJ9AHcCfwKlAHgCqgKvAJ8CtALEAKUCxgLPALYC2ALaAMAC3ALcAMMC3gLeAMQC4ALgAMUC4gLiAMYC5QLlAMcC5wLnAMgC6QLpAMkC6wLrAMoC7QLtAMsC7wLvAMwC8QL9AM0C/wL/ANoDAQMBANsDAwMDANwDDgMOAN0DEAMQAN4DEgMSAN8DFAMUAOADFgMWAOEDGAMYAOIDGgMaAOMDHAMcAOQDHgMeAOUDIAMgAOYDIgMqAOcDLwM4APADQwNHAPoDTQNPAP8DVANUAQIDZQNpAQMDbQNvAQgDeAN4AQsDhgOLAQwDjgOdARIDoAOgASIDpAOkASMDpgOmASQDqgOqASUDrQOuASYDsAO5ASgDuwO9ATIDvwPEATUDxgPMATsD0gPTAUID1QPVAUQD1wPXAUUD2QPcAUYD3wPkAUoD5gPmAVAD6gPrAVED8AP7AVMD/gP/AV8EAQQEAWEECwQMAWUEEAQQAWcEEgQYAWgEHgRGAW8ESARIAZgESgRXAZkEXwRfAacEYgRiAagEZARkAakEcAR1AaoEdwR3AbAEewR8AbEEfwR/AbMEgQSCAbQEhASEAbYEhgSGAbcElwSbAbgEnQSdAb0EnwSgAb4EogSiAcAEpgSoAcEEqgSqAcQErASuAcUEsASwAcgEsgSyAckEtAS6AcoEvAS8AdEEvwS/AdIEwQTGAdMEyATLAdkEzwTPAd0E0gTSAd4E2ATYAd8E3QTdAeAE6AToAeEE6gTqAeIE8QTxAeME9QT1AeQAAgF0AAYABgAZAAsACwAZABAAEAAhABIAEgAhACUAJQACACYAJgAcACcAJwATACgAKAABACkAKQAFAC4ALgAKAC8ALwALADAAMAAYADMAMwABADQANAAWADgAOAAOADkAOQAKADoAOgAdADsAOwAbADwAPAASAD0APQAMAD4APgARAEUARQAGAEYARgAHAEcARwAXAEkASQAI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AAAACwAAAAAAAwAAAAMAAAAAAAIAAQARABUACwAAACAAIQAAAAAAAAAAAAAAAAAAABkAGwAAAAMAAAADAAAAAwAAAAAAAAAAAAMAEQAVAAAAAQABAAAAAAAAAAAAGQAAAAAAAAACAAEAAAAAAAAAGQAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAfAAAAFAAUABoAFAAUABQAGgAAAAAAAAAaABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXABwAJAAAABIAGAAeAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAANAAgADQAAAAAAAAAAAAAAAAAYAAgAAAAAABgAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAABgACAAXABwAGAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAAACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAYABgAGAAYABgAGAAYAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIACgAKAAoACgAMAAcABwAHAAcABwAHAAcAAQABAAEAAQABAAAAAAAAAAAAAwAEAAQABAAEAAQABQAFAAUABQAJAAkABgAHAAYABwAGAAcAAgABAAIAAQACAAEAAgABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAIAAQACAAEAAgABAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAMAAgAEAAIABAACAAQAAAAAAAAAAAAAAAAAEAAOABAADgAQAA4AEAAOABAADgALAAAACwAAAAsAAAAKAAUACgAFAAoABQAKAAUACgAFAAoABQAWAAAADAAJAAwAEwAPABMADwATAA8AAAAAAAIAAAAAAAAAAAANAA0ADQANAA0ADQANAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgACAAIABIAEgASABIAFwANAA0ADQAIAAgACAAIAAAAAAAAAAAAAAAAAAgACAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAIAAgAAAAAAAAAHgAeAB4AHgAAABgAAAASABIAEgASABIAEgAkABcAFwAAAAAAAAAGAAAAAAAAAAIADAAAAAAABgAAAAAAEwAAAAAAAAAAAAAAAgAAAAAADAARAAAADAABAAAAAwAAAAUAAAAEAAAACQAAAAAABQAEAAUAAAAAAAAAAAAAAAAAIwAAAAAAIgAGAAAAAAAAAAAAAAAAAAIAAAAAAAIACwARAAcAAQADAAQAAwABAAkAFQABAAMADgAAAAAAAAADAAkAFgAAABYAAAAWAAAADAAJABQAFAAAAAAAFAAAAAMABgAHAAAAAAABAAMAAAAAAB0ACQABAAIAAAAAAAIAAQAMAAkAAAARABUAAAAGAAcABgAHAAAAAAAAAAEAAAABAAEAEQAVAAAAAAAAAAMAAAADAAIABAACAAEAAgAEAAAAAAAiAAkAIgAJACIACQAgACEAAAADAAEABgAHAAYABwAGAAcABgAHAAYABwAGAAcABgAHAAYABwAGAAcABgAHAAYABwAGAAcAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAAAAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAEAAgABAAIAAQACAAQAAgABAAoABQAKAAUAAAAFAAAABQAAAAUAAAAFAAAABQAMAAkADAAJAAwACQAAAAsAAAAgACEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMABgAHAAAAAQAAAAAAAgAEAAAAAAAAAAUAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwACAAAAAAAAAAAAEAAOAAsAAAAKAB0ACQAdAAkAFgAAABMADwAAAA0AAAAAAAAACAAXAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAcAAAAFwAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAIAAAAAAAIABgAHAAAAAAACAAXAAAAAQAAAAoBYgKSAARERkxUABpjeXJsABpncmVrABpsYXRuAEgABAAAAAD//wASAAAAAQACAAMABAAIAAwADQAOAA8AEAARABIAEwAUABUAFgAXAC4AB0FaRSAA5ENSVCAA5EZSQSAAWk1PTCAAtk5BViAAiFJPTSAAtlRSSyAA5AAA//8AEwAAAAEAAgADAAQABwAIAAwADQAOAA8AEAARABIAEwAUABUAFgAXAAD//wAUAAAAAQACAAMABAAGAAgACQAMAA0ADgAPABAAEQASABMAFAAVABYAFwAA//8AFAAAAAEAAgADAAQABgAIAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAAP//ABQAAAABAAIAAwAEAAYACAAKAAwADQAOAA8AEAARABIAEwAUABUAFgAXAAD//wATAAAAAQACAAMABAAFAAgADAANAA4ADwAQABEAEgATABQAFQAWABcAGGMyc2MAkmNjbXAAmGRsaWcAoGRub20ApmZyYWMArGxpZ2EAtmxpZ2EAvGxpZ2EAyGxudW0A0GxvY2wA1mxvY2wA3GxvY2wA4m51bXIA6G9udW0A7nBudW0A9HNtY3AA+nNzMDEBAHNzMDIBBnNzMDMBDHNzMDQBEnNzMDUBGHNzMDYBHnNzMDcBJHRudW0BKgAAAAEAAAAAAAIAAgAEAAAAAQAKAAAAAQAYAAAAAwAWABcAGQAAAAEACQAAAAQACAAJAAgACQAAAAIACAAJAAAAAQAVAAAAAQAHAAAAAQAFAAAAAQAGAAAAAQAZAAAAAQASAAAAAQATAAAAAQABAAAAAQALAAAAAQAMAAAAAQANAAAAAQAOAAAAAQAPAAAAAQAQAAAAAQARAAAAAQAUABoANgQwB+4IoAjKD24PhA+uD8IP5hAQEEwQYBB0EIgQmhC0EPYRFBFmEawSDhJsEoASsBLSAAEAAAABAAgAAgH6APoB5wJxAdEB0AHPAc4BzQHMAcsBygHJAcgCMwIyAjECMAIoAeYB5QHkAeMB4gHhAeAB3wHeAd0B3AHbAdoB2QHYAdcB1gHVAdQB0wHSAegB6QJzAnUCdAJ2AnICdwJSAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+AgACAQT+AgICAwIEAgUCBgIHAggCCQIKAgsCOwINAg4CDwIQBPgCEQITAhQCFQIWAhcCGAIZAhsCHAIeAh0DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjBP8DZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UFAgN2A3cDeQN4A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFBQAFAQTLBMwEzQTOBM8E0ATRBNIE0wTUBNUE1gTXBNgE2QTaBNsE3ATdBN4E3wTgBOEE4gTjBOQE5QTmBOcB/wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gUDBQQFBQUGBPcE+QT6BPwCGgT9BPsCDAISBQsFDAABAPoACAAKABQAFQAWABcAGAAZABoAGwAcAB0AJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AGUAZwCBAIMAhACMAI8AkQCTALEAsgCzALQAtQC2ALcAuAC5ALoA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkBLwEzATUBNwE5ATsBQQFDAUUBSQFLAUwBWAFZAZcBnQGiAaUCegJ7An0CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCtgK4AroCvAK+AsACwgLEAsYCyALKAswCzgLQAtIC1ALWAtgC2gLcAt4C4ALiAuMC5QLnAukC6wLtAu8C8QLzAvUC+AL6AvwC/gMAAwIDBAMGAwgDCgMMAw4DEAMSAxQDFgMYAxoDHAMeAyADIgMkAyUDJwMpAysDLQOGA4cDiAOJA4oDiwOMA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DrQOuA68DsAOxA7IDswO0A7UDtgO3A7gDuQO6A7sDvAO9A74DvwPAA8EDwgPTA9UD1wPZA+4D8APyBAcEDQQTBH0EggSGBQcFCQABAAAAAQAIAAIB3ADrAnECMwIyAjECMAIoAeYB5QHkAeMB4gHhAeAB3wHeAd0B3AHbAdoB2QHYAdcB1gHVAdQB0wHSAmQCcwMwAnUCdAMvAeMCcgJ3AlIE0gTTAeoB6wTUBNUE1gHsBNcB7QHuAe8E3AHwAfAE3QTeAfEB8gHzAfoE6wTsAfsB/AH9Af4B/wIABO8E8ATyBPUE/gICAgMCBAIFAgYCBwIIAgkCCgILAfQB9QH2AfcB+AH5AjsCDQIOAg8CEAT4AhECEwIUAhUCFwIZAnYDMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTAOCA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IE/wNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQUCA3YDdwN5A3gDegN7A3wDfQN+A38DgAOBA4MDhAOFBQAFAQTLBMwEzQTOBNgE2wTZBNoE3wTgBOEEzwTQBNEE6gTtBO4E8QTzBPQCAQT2BOIE4wTkBOUE5gTnBOgE6QUDBQQFBQUGBPcE+QT6AhgE/AIaBP0E+wIWAgwCEgULBQwAAQDrAAoARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAIUAhgCHAIkAigCLAI0AkACSAJQAuwC8AL0AvgC/AMAAwQDCAMMAxADFAMYAxwDIAMkAygDLAMwAzQDOAOoA6wDsAO0A7gDvAPAA8QDyAPMA9AD1APYA9wD4APkA+gD7APwA/QD+AP8BAAEBAQIBAwEEAQUBBgEHATABNAE2ATgBOgE8AUIBRAFGAUoBTQFaAnwCfgKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArcCuQK7Ar0CvwLBAsMCxQLHAskCywLNAs8C0QLTAtUC1wLZAtsC3QLfAuEC5ALmAugC6gLsAu4C8ALyAvQC9gL5AvsC/QL/AwEDAwMFAwcDCQMLAw0DDwMRAxMDFQMX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';\r\n\r\n this.addFileToVFS('Roboto-Bold-normal.ttf', font);\r\n this.addFont('Roboto-Bold-normal.ttf', 'Roboto-Bold', 'normal');\r\n };\r\n\r\n jsPDF.API.events.push(['addFonts', callAddRobotoBoldNormalFont]);\r\n }\r\n\r\n}","import {APIService} from \"../../shared/services/APIService\";\r\nimport {AxiosResponse} from \"axios\";\r\nimport {Html} from \"../../admin/models/HTML\";\r\n\r\nexport class FileService extends APIService {\r\n /**\r\n * Get one html by name\r\n */\r\n getOne(name: string): Promise> {\r\n return this.http.get(`/htmls/${name}/file`);\r\n }\r\n}\r\n","import jsPDF from \"jspdf\";\r\nimport html2canvas from \"html2canvas\";\r\nimport {FormService} from \"../../form/services/FormService\";\r\nimport {TFunction} from \"i18next\";\r\nimport {JsPDFUtils} from \"./JsPDFUtils\";\r\n\r\nexport class GraphPDFUtils {\r\n static async timeout(ms) {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n }\r\n static async exportGraphPDF(appTitle: string,\r\n graphTitle: string,\r\n graphComparisonTitle: string,\r\n diagramTitle: string,\r\n appLogo: string,\r\n bbriLogo : string) {\r\n\r\n JsPDFUtils.initJsPDF();\r\n\r\n const graphHTML = document.getElementById(\"graph-zone\")\r\n const tabHTML = document.getElementById(\"graph-table\")\r\n const resultHTML = document.getElementById(\"graph-result\")\r\n const diagramHTML = document.getElementById(\"diagram-zone\")\r\n\r\n const pdf = new jsPDF('p', 'pt', 'a4');\r\n\r\n const applicationTitle = appTitle\r\n const title = graphTitle\r\n\r\n let offset = 0\r\n\r\n const langImage = new Image();\r\n langImage.src = appLogo\r\n const logoImageRapport = langImage.width > langImage.height ? langImage.width / langImage.height : langImage.height / langImage.width;\r\n let width = 0\r\n if (logoImageRapport > 2) {\r\n width = 30 * logoImageRapport\r\n }\r\n else {\r\n width = 30 / logoImageRapport\r\n }\r\n pdf.addImage(langImage, 'png', 40, 20, width, 30);\r\n\r\n const bbriImage = new Image();\r\n bbriImage.src = bbriLogo\r\n const bbriImageRapport = bbriImage.width > bbriImage.height ? bbriImage.width / bbriImage.height : bbriImage.height / bbriImage.width;\r\n let widthBbri = 0\r\n if (bbriImageRapport > 2) {\r\n widthBbri = 30 * bbriImageRapport\r\n }\r\n else {\r\n widthBbri = 30 / bbriImageRapport\r\n }\r\n pdf.addImage(bbriImage, 'png', 420, 20, widthBbri, 30);\r\n\r\n // pdf.setFontSize(25)\r\n // pdf.text(applicationTitle, 40, 30 + offset)\r\n offset += 60\r\n pdf.setFontSize(18)\r\n pdf.setFont(\"Roboto-Bold\", \"normal\")\r\n pdf.text(title, 40, 30 + offset)\r\n offset += 20\r\n pdf.setFont(\"Roboto-Regular\", \"normal\")\r\n if (resultHTML) {\r\n pdf.setFontSize(12)\r\n pdf.text(resultHTML.innerText.replace(\"\\n\", \"\"), 40, 30 + offset, { maxWidth: 500})\r\n offset += 40\r\n }\r\n if (graphHTML) {\r\n graphHTML.classList.add(\"print-graph\")\r\n await this.timeout(50)\r\n let canvasGraph = await html2canvas(graphHTML)\r\n pdf.addImage(canvasGraph.toDataURL(\"image/jpeg\"), \"JPEG\", 40, 50 + offset, 480, 220)\r\n offset += 280\r\n }\r\n if (tabHTML) {\r\n const tabCanvas = await html2canvas(tabHTML)\r\n let imgWidth = 210;\r\n let pageHeight = 200;\r\n let imgHeight = tabCanvas.height * imgWidth / tabCanvas.width;\r\n let heightLeft = imgHeight;\r\n\r\n let position = 0\r\n\r\n pdf.setFontSize(18)\r\n pdf.setFont(\"Roboto-Bold\", \"normal\")\r\n pdf.text(graphComparisonTitle, 40, 20 + offset)\r\n pdf.addImage(tabCanvas.toDataURL(\"image/jpeg\"), \"JPEG\", 50, 50 + offset, 480, tabCanvas.height/3)\r\n heightLeft -= pageHeight\r\n\r\n if (heightLeft >= 0) {\r\n position = heightLeft - imgHeight\r\n console.log(position)\r\n pdf.addPage()\r\n pdf.addImage(tabCanvas.toDataURL(\"image/jpeg\"), \"JPEG\", 50, position - 235, 480, tabCanvas.height/3)\r\n }\r\n offset += 40\r\n }\r\n if (diagramHTML) {\r\n pdf.setFontSize(18)\r\n pdf.setFont(\"Roboto-Bold\", \"normal\")\r\n pdf.text(diagramTitle, 40, 30 + offset, { maxWidth: 500})\r\n offset += 10\r\n const diagramImage = diagramHTML.getElementsByTagName(\"img\")[0]\r\n const svgRes = await fetch(diagramImage.src + \"?get\")\r\n let svgString = await svgRes.text()\r\n svgString = svgString.replace(/\\r?\\n|\\r/g, '').trim()\r\n svgString = svgString.replace(\"svg\", `svg width=\"${diagramImage.width}\" height=\"${diagramImage.height}\"`)\r\n console.log(svgString)\r\n const decodedSvgString = unescape(encodeURIComponent(svgString))\r\n const base64 = btoa(decodedSvgString)\r\n const imageSource = `data:image/svg+xml;base64,${base64}`\r\n const diagramPNG = await this.base64SvgToBase64Png(imageSource, 1900)\r\n pdf.addImage(diagramPNG as HTMLImageElement, \"PNG\", 40, offset, 500, 360)\r\n }\r\n\r\n pdf.save(\"pv-diagram.pdf\", { returnPromise: true })\r\n .then(() => {\r\n if (graphHTML) {\r\n graphHTML.classList.remove(\"print-graph\")\r\n }\r\n })\r\n\r\n }\r\n\r\n private static base64SvgToBase64Png (originalBase64, width) {\r\n return new Promise(resolve => {\r\n let img = document.createElement('img');\r\n img.onload = function () {\r\n document.body.appendChild(img);\r\n let canvas = document.createElement(\"canvas\");\r\n let ratio = (img.clientWidth / img.clientHeight) || 1;\r\n document.body.removeChild(img);\r\n canvas.width = width;\r\n canvas.height = width / ratio;\r\n let ctx = canvas.getContext(\"2d\");\r\n if (ctx) {\r\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\r\n try {\r\n let data = canvas.toDataURL('image/png');\r\n resolve(data);\r\n } catch (e) {\r\n resolve(null);\r\n }\r\n }\r\n else {\r\n resolve(null)\r\n }\r\n };\r\n img.onerror = function() {\r\n resolve(null);\r\n };\r\n img.src = originalBase64;\r\n });\r\n }\r\n}","import { TFunction } from \"i18next\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { LineChart, Line, CartesianGrid, XAxis, YAxis, Legend, Tooltip, ReferenceLine, ResponsiveContainer, Text, ReferenceDot } from 'recharts';\r\nimport { Dot } from \"../models/Dot\"\r\nimport { Graph } from \"../models/Graph\"\r\nimport { FormService } from \"../services/FormService\";\r\nimport { Button } from \"@bbri/ui\";\r\nimport {GraphPDFUtils} from \"../../shared/utils/GraphPDFUtils\";\r\nimport \"./FormPVGraph.scss\"\r\n\r\ninterface Props extends WithTranslation {\r\n graphs: Graph[]\r\n onGraphClick?: (graphs: Graph[]) => void\r\n}\r\n\r\ninterface States {\r\n highlightedDot: Dot[]\r\n activeHighlightedDot: number\r\n lineColors: string[]\r\n min: number\r\n max: number\r\n}\r\n\r\nexport const colors = [\"#ec6607\", \"#0087b7\", \"#00bfba\", \"#005979\", \"#9c9c9c\", \"#383838\", \"#ec6607\", \"#E6AC27\", \"#E08E79\", \"#EDB407\"]\r\n\r\nclass FormPVGraph extends React.Component {\r\n\r\n private currentX: number\r\n private formService: FormService\r\n private t: TFunction\r\n\r\n constructor(props: Props) {\r\n super(props)\r\n this.currentX = 0\r\n this.formService = new FormService()\r\n this.t = this.props.t\r\n this.state = {\r\n highlightedDot: [],\r\n activeHighlightedDot: 0,\r\n lineColors: [],\r\n min: 0,\r\n max: 1\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n\r\n this._getColors()\r\n if (this.props.graphs.length > 0 && this.props.graphs[0].dots.length > 0) {\r\n this._calculateMinMax(this.props.graphs)\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any): void {\r\n this._getColors()\r\n if (nextProps.graphs.length > 0 && nextProps.graphs[0].dots.length > 0) {\r\n this._calculateMinMax(nextProps.graphs)\r\n }\r\n }\r\n\r\n private _calculateMinMax(graphs: Graph[]) {\r\n\r\n let min = graphs[0].dots[0].x\r\n let max = graphs[0].dots[0].x\r\n\r\n for (const graph of graphs) {\r\n for (const dot of graph.dots) {\r\n if (dot.x < min) {\r\n min = dot.x\r\n }\r\n\r\n if (dot.x > max) {\r\n max = dot.x\r\n }\r\n }\r\n }\r\n\r\n this.setState({\r\n min,\r\n max\r\n })\r\n }\r\n\r\n private _getColors() {\r\n const colors: string[] = []\r\n for (const graph of this.props.graphs) {\r\n const color = \"#\" + (\"00000\" + Math.floor(Math.random() * Math.pow(16, 6)).toString(16)).slice(-6);\r\n colors.push(color)\r\n }\r\n this.setState({\r\n lineColors: colors\r\n })\r\n }\r\n\r\n handleOnMouseEnter(i) {\r\n if (i !== this.state.highlightedDot.length - 1) {\r\n const newList = [...this.state.highlightedDot]\r\n const temp = newList[newList.length - 1]\r\n newList[newList.length - 1] = newList[i]\r\n newList[i] = temp\r\n this.setState({\r\n highlightedDot: newList\r\n })\r\n }\r\n }\r\n\r\n async handleOnMouseMove(e) {\r\n this.currentX = e.activeLabel ? parseInt(e.activeLabel) : 0\r\n }\r\n\r\n private handleLineChartClick() {\r\n if (this.props.onGraphClick) {\r\n const graphs : Graph[] = []\r\n for (const graph of this.props.graphs) {\r\n const dot = graph.dots.find(d => d.x === this.currentX)\r\n if (dot) {\r\n graphs.push({\r\n title: graph.title,\r\n dots: [dot]\r\n })\r\n }\r\n }\r\n this.props.onGraphClick(graphs)\r\n }\r\n }\r\n\r\n private getValueForEachGraph(value, name, e) {\r\n const currentGraph = this.props.graphs.find(g => g.title === name)\r\n const currentDot = currentGraph?.dots.find(d => d.x === this.currentX)\r\n if (currentDot?.y) {\r\n return parseInt(currentDot.y.toString()) + \" kW\"\r\n }\r\n else {\r\n return \"\"\r\n }\r\n }\r\n\r\n private getTicks() {\r\n const result: number[] = []\r\n for (let i = this.state.min; i <= this.state.max; i = i + ((this.state.max - this.state.min) / 4)) {\r\n if (i === this.state.min) {\r\n result.push(Math.floor(this.state.min / 100) * 100)\r\n }\r\n else {\r\n result.push(Math.floor(i / 100) * 100)\r\n }\r\n }\r\n return result\r\n }\r\n\r\n _renderGraph() {\r\n return (\r\n this.handleOnMouseMove(e)}\r\n onClick={() => this.handleLineChartClick()}>\r\n\r\n \r\n \r\n\r\n {this.props.graphs.length > 1 && (\r\n \r\n )}\r\n\r\n 1}\r\n formatter={(value, name, e) => this.getValueForEachGraph(value, name, e)}\r\n labelFormatter={(value) => value + \" L\"}\r\n />\r\n\r\n {this.props.graphs.slice(0, colors.length).map((g, i) => (\r\n 1 ? colors[i] : \"#01A398\"}\r\n strokeWidth={3}\r\n dot={false}\r\n activeDot={this.props.graphs.length > 1 ? false : {\r\n r: 5,\r\n onClick: (c, event) => {\r\n this.setState(state => {\r\n const dotAlreadyHighlighted = this.state.highlightedDot.find(d => d.x === event[\"payload\"][\"x\"])\r\n let newList: Dot[] = []\r\n if (!dotAlreadyHighlighted) {\r\n newList = state.highlightedDot.concat({ x: event[\"payload\"][\"x\"], y: Math.floor(event[\"payload\"][\"y\"] * 100) / 100 })\r\n }\r\n this.setState({\r\n highlightedDot: newList\r\n })\r\n })\r\n },\r\n\r\n }}\r\n />\r\n ))}\r\n\r\n {this.state.highlightedDot.map(\r\n (coord, i) => (\r\n \r\n {\r\n const newList = this.state.highlightedDot.filter(d => d.x !== coord.x)\r\n this.setState({\r\n highlightedDot: newList\r\n })\r\n }}\r\n onMouseEnter={() => {\r\n this.handleOnMouseEnter(i)\r\n }}\r\n label={(props) => (\r\n this.handleOnMouseEnter(i)}\r\n />\r\n \r\n {Math.floor(coord.y)} kW / {coord.x} L\r\n \r\n )}\r\n isFront={true}>\r\n \r\n \r\n \r\n )\r\n )}\r\n \r\n\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n {this._renderGraph()}\r\n \r\n
\r\n )\r\n }\r\n\r\n\r\n}\r\n\r\nexport default withTranslation()(FormPVGraph)","export enum FormType {\r\n GRAPH = \"graph\",\r\n REQUIREMENT = \"requirement\"\r\n}","export class ResponseDTO {\r\n\r\n constructor(\r\n readonly question: string,\r\n readonly value: any\r\n ) {\r\n }\r\n}","import { ResponseDTO } from './ResponseDTO';\r\n\r\nexport class ResponsesDTO {\r\n\r\n responses: ResponseDTO[];\r\n\r\n constructor(\r\n values: Record\r\n ) {\r\n this.responses = [];\r\n for (const questionKey in values) {\r\n this.responses.push(\r\n new ResponseDTO(questionKey, values[questionKey])\r\n );\r\n }\r\n\r\n }\r\n}","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport { DecisionTreeResultDTO } from '../dto/DecisionTreeResultDTO';\r\nimport { ResponsesDTO } from '../dto/ResponsesDTO';\r\nimport {Form} from \"../models/Form\";\r\nimport {DecisionTree} from \"../../admin/models/DecisionTree\";\r\nimport {Html} from \"../../admin/models/HTML\";\r\nimport {Logger} from \"@azure/msal-common\";\r\n\r\nexport class DecisionTreeService extends APIService {\r\n\r\n /**\r\n * Compute decision tree\r\n */\r\n async computeDecisionTree(name: string, responses: Record) {\r\n const dto = new ResponsesDTO(responses);\r\n return this.http.post('/decision-trees/' + name + '/compute', dto)\r\n .then((response: AxiosResponse) => {\r\n return response.data.result;\r\n })\r\n .catch((e) => {\r\n console.log(e)\r\n });\r\n }\r\n\r\n getAllDecisionTrees(): Promise> {\r\n return this.http.get('/decision-trees');\r\n }\r\n}\r\n","import { APIService } from '../../shared/services/APIService';\r\nimport { DiagramComment } from '../models/DiagramComment';\r\n\r\nexport class DiagramCommentService extends APIService {\r\n getAllComments() {\r\n return this.http.get('/diagramComments');\r\n }\r\n\r\n \r\n}","import { APIService } from '../../shared/services/APIService';\r\nimport { Diagram } from '../models/Diagram';\r\n\r\nexport class DiagramService extends APIService {\r\n async getOneDiagramByName(name: string) {\r\n const res = await this.http.get('/diagrams/' + name);\r\n return res.data\r\n }\r\n}","import React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { Diagram } from \"../models/Diagram\"\r\nimport { DiagramDot } from \"../models/DiagramDot\";\r\nimport { FormService } from \"../services/FormService\";\r\nimport { TFunction } from \"i18next\";\r\nimport \"./FormDiagram.scss\";\r\nimport { DiagramComment } from \"../models/DiagramComment\";\r\nimport Draggable, { DraggableData } from \"react-draggable\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport { MultiSelect } from \"primereact/multiselect\";\r\nimport { InputText } from \"primereact/inputtext\";\r\nimport { DiagramLegend } from \"../models/DiagramLegend\";\r\n\r\ninterface Props extends WithTranslation {\r\n diagram: Diagram\r\n comments: DiagramComment[]\r\n editable: boolean\r\n allPrismicKeys?: string[]\r\n mouseUp?: (diagramDots: DiagramDot[], width: number, height: number) => void\r\n onCommentSave?: (comment: DiagramComment) => void\r\n onCommentDelete?: (number: number) => void\r\n onLegendSave?: (legend: DiagramLegend) => void\r\n onLegendDelete ?: (title: string) => void\r\n}\r\n\r\ninterface States {\r\n dots: DiagramDot[]\r\n currentComment: DiagramComment\r\n currentDot: DiagramDot | null\r\n searchedComment: string\r\n imageSize: { width: number, height: number }\r\n showModal: boolean\r\n previousComments: DiagramComment[]\r\n newLegend : DiagramLegend\r\n}\r\n\r\nclass FormDiagram extends React.Component {\r\n\r\n private readonly fService: FormService\r\n private readonly t: TFunction\r\n private toast: Toast | null;\r\n private imgRef: React.RefObject\r\n\r\n constructor(props: Props) {\r\n super(props)\r\n this.t = this.props.t\r\n this.fService = new FormService()\r\n this.toast = null;\r\n this.imgRef = React.createRef()\r\n\r\n let initialComment: DiagramComment\r\n if (props.comments.length > 0) {\r\n initialComment = this.props.comments[0]\r\n }\r\n else {\r\n initialComment = { number: 1, title: \"\", relatedComments: [], content: \"\" }\r\n }\r\n\r\n this.state = {\r\n dots: props.diagram.dots,\r\n imageSize: { width: 0, height: 0 },\r\n showModal: false,\r\n currentComment: initialComment,\r\n currentDot: null,\r\n searchedComment: \"\",\r\n previousComments: [],\r\n newLegend: {\r\n title: \"\",\r\n image: \"\"\r\n }\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n window.addEventListener(\"resize\", () => {\r\n this.handleResize()\r\n })\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any): void {\r\n this.setState({\r\n dots: nextProps.diagram.dots,\r\n })\r\n }\r\n\r\n handleImageLoad(e): void {\r\n this.setState({\r\n imageSize: {\r\n width: e.target.width,\r\n height: e.target.height\r\n }\r\n })\r\n }\r\n\r\n handleResize() {\r\n if (this.imgRef.current) {\r\n\r\n const { width, height } = this.imgRef.current\r\n\r\n if (this.state.imageSize.width !== width\r\n || this.state.imageSize.height !== height) {\r\n this.setState({\r\n imageSize: {\r\n width: width,\r\n height: height\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n handleDrag(data: DraggableData, dot: DiagramDot) {\r\n let newDots = this.state.dots.map(\r\n d => d === dot ? { ...d, x: data.x, y: data.y } : d\r\n )\r\n this.setState({\r\n dots: newDots\r\n })\r\n }\r\n\r\n private _handleOnCommentClick(dots: DiagramDot[], comment: DiagramComment, dot: DiagramDot) {\r\n if (this.props.mouseUp && this.imgRef.current) {\r\n const newDots = dots.map((d => ({ ...d, x: d.x * (this.state.imageSize.width / this.props.diagram.imgSize.width), y: d.y * (this.state.imageSize.height / this.props.diagram.imgSize.height) })))\r\n this.props.mouseUp(newDots, this.imgRef.current.width, this.imgRef.current.height)\r\n }\r\n this.setState({\r\n currentComment: comment,\r\n currentDot: dot\r\n })\r\n }\r\n\r\n private _getComments() {\r\n const result: JSX.Element[] = []\r\n let filteredComment = this.props.comments\r\n if (this.state.searchedComment !== \"\") {\r\n filteredComment = this.props.comments.filter(c => c.number == parseInt(this.state.searchedComment))\r\n }\r\n filteredComment = filteredComment.sort((a, b) => a.number - b.number)\r\n\r\n for (const comment of filteredComment) {\r\n result.push((\r\n
{\r\n\r\n const dots = this.state.dots\r\n const dot = { number: comment.number, x: 0, y: 0 }\r\n dots.push(dot)\r\n\r\n this._handleOnCommentClick(dots, comment, dot)\r\n }}>\r\n
{comment.number}
{this.fService.t(this.t, comment.title, false)}\r\n
\r\n ))\r\n }\r\n\r\n\r\n return result\r\n }\r\n\r\n private _getDots() {\r\n\r\n const result: JSX.Element[] = []\r\n this.state.dots.forEach((dot, i) => {\r\n const comment = this.props.comments.find(e => e.number === dot.number)\r\n if (comment) result.push((\r\n {\r\n this.handleDrag(data, dot)\r\n }}\r\n onStart={() => this._handleOnCommentClick(this.state.dots, comment, dot)}\r\n onStop={(event, data) => {\r\n this.handleDrag(data, dot)\r\n this._handleOnCommentClick(this.state.dots, comment, dot)\r\n }}\r\n disabled={!this.props.editable}\r\n >\r\n {\r\n this.setState({\r\n showModal: true,\r\n currentComment: comment,\r\n currentDot: dot\r\n })\r\n }}\r\n style={{\r\n position: \"absolute\",\r\n zIndex: 1\r\n }}>\r\n {comment.number}\r\n \r\n \r\n ))\r\n })\r\n\r\n return result\r\n\r\n }\r\n\r\n private _getModalHeader = (title: string) => {\r\n return (\r\n <>\r\n\r\n
\r\n {this.state.previousComments.length > 0 && (\r\n
\r\n\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n (this.toast = el)} />\r\n
\r\n {this.props.diagram.name !== \"\" && (\r\n <>\r\n \r\n\r\n {this._getDots()}\r\n this.handleImageLoad(e)}\r\n ref={this.imgRef}\r\n >\r\n\r\n
\r\n {this.props.editable && (\r\n
\r\n \r\n this.setState({ searchedComment: e.currentTarget.value })}\r\n style={{ marginTop: \"10px\", marginBottom: \"10px\" }}\r\n type=\"number\"\r\n placeholder=\"Search comment\" />\r\n \r\n {this._getComments()}\r\n
\r\n
\r\n )}\r\n \r\n )}\r\n\r\n \r\n\r\n {!this.props.editable && (\r\n \r\n
\r\n {this.props.diagram.legends.map((l, i) => (\r\n
\r\n \r\n

{this.fService.t(this.t, l.title, false)}

\r\n
\r\n ))}\r\n
\r\n \r\n )}\r\n\r\n {this.props.editable ? (\r\n <>\r\n
\r\n

Legend

\r\n {this.props.diagram.legends.map(l => (\r\n
\r\n \r\n

{l.title}

\r\n {\r\n if (this.props.onLegendDelete) {\r\n this.props.onLegendDelete(l.title)\r\n }\r\n }}\r\n >\r\n
\r\n ))}\r\n
\r\n {\r\n this.setState({\r\n newLegend: {...this.state.newLegend, image: e.target.value}\r\n })\r\n }}\r\n placeholder=\"New prismic key legend image\"\r\n editable\r\n />\r\n {\r\n this.setState({\r\n newLegend: {...this.state.newLegend, title: e.target.value}\r\n })\r\n }}\r\n placeholder=\"New prismic key legend title\"\r\n editable\r\n />\r\n {\r\n if (this.props.onLegendSave) {\r\n this.props.onLegendSave(this.state.newLegend)\r\n }\r\n }}\r\n >\r\n
\r\n
\r\n
\r\n

Comments

\r\n
\r\n e.number)}\r\n onChange={(e) => {\r\n if (parseInt(e.value)) {\r\n const newComment = this.props.comments.find(c => c.number == e.value)\r\n if (newComment) {\r\n this.setState({\r\n currentComment: newComment\r\n })\r\n }\r\n else {\r\n this.setState({\r\n currentComment: {...this.state.currentComment, number: parseInt(e.value)}\r\n })\r\n }\r\n }\r\n }}\r\n placeholder=\"Comment number\"\r\n editable\r\n />\r\n
\r\n
\r\n \r\n {\r\n this.setState({\r\n currentComment: { ...this.state.currentComment, title: e.value }\r\n })\r\n }}\r\n editable\r\n />\r\n
\r\n
\r\n \r\n {\r\n this.setState({\r\n currentComment: { ...this.state.currentComment, content: e.value }\r\n })\r\n }}\r\n editable\r\n />\r\n
\r\n
\r\n \r\n c.number)}\r\n onChange={(e) => {\r\n this.setState({\r\n currentComment: { ...this.state.currentComment, relatedComments: e.value }\r\n })\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n if (this.props.onCommentSave) {\r\n this.props.onCommentSave(this.state.currentComment)\r\n }\r\n }}\r\n >Save comment\r\n {\r\n let newNumber\r\n if (this.props.comments.length > 0) {\r\n newNumber = this.props.comments[this.props.comments.length - 1].number + 1\r\n }\r\n else {\r\n newNumber = 1\r\n }\r\n this.setState({\r\n currentComment: { number: newNumber, title: \"\", relatedComments: [], content: \"\" }\r\n })\r\n }}\r\n >New comment\r\n {\r\n if (this.props.onCommentDelete) {\r\n this.props.onCommentDelete(this.state.currentComment.number)\r\n }\r\n }}\r\n >Delete this comment\r\n
\r\n
\r\n \r\n ) : (\r\n
\r\n {this.state.currentComment && (\r\n this.setState({ showModal: false, previousComments: [] })}\r\n style={{ width: \"800px\" }}\r\n header={this._getModalHeader(`${this.state.currentComment.number} - ${this.fService.t(this.t, this.state.currentComment.title, false)}`)}\r\n \r\n >\r\n
\r\n

{this.fService.t(this.t, this.state.currentComment.content, true)}

\r\n {this.state.currentComment.relatedComments.length > 0 && (\r\n <>\r\n

{this.fService.t(this.t, \"related_comments\", true)}

\r\n {this.state.currentComment.relatedComments.map(c => {\r\n const comment = this.props.comments.find(com => com.number === c)\r\n return (\r\n {\r\n if (comment) {\r\n const previousComment = this.state.currentComment\r\n const newPreviousComments = [...this.state.previousComments]\r\n newPreviousComments.push(previousComment)\r\n this.setState({\r\n previousComments: newPreviousComments,\r\n currentComment: comment\r\n })\r\n }\r\n }}>\r\n
{comment?.number}
{comment && this.fService.t(this.t, comment.title, false)}\r\n
\r\n )\r\n })}\r\n \r\n )}\r\n
\r\n \r\n )}\r\n \r\n )}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormDiagram)","export class ReactGAUtils {\r\n static category: string;\r\n static getCategory(): string {\r\n if (ReactGAUtils.category) {\r\n return ReactGAUtils.category;\r\n }\r\n\r\n const url = new URL(window.location.href);\r\n\r\n let category: string | null = null;\r\n\r\n if (url.hostname.endsWith('buildwise.be')) {\r\n category = url.hostname.replace(/^(.+)[.]buildwise[.]be$/, '$1');\r\n }\r\n else if (url.hostname.endsWith('azurewebsites.net')) {\r\n category = url.hostname.replace(/^(.+)[.]azurewebsites[.]net$/, '$1');\r\n }\r\n\r\n if (category) {\r\n if (category.startsWith('bbri-betonapp')) {\r\n category = category.replace(/^bbri-betonapp(.+)$/, '$1');\r\n }\r\n }\r\n\r\n if (!category) {\r\n category = url.hostname;\r\n }\r\n\r\n ReactGAUtils.category = category;\r\n\r\n console.log(`[ReactGAUtils] ${url.hostname} -> ${ReactGAUtils.category}`)\r\n\r\n return ReactGAUtils.category;\r\n }\r\n}\r\n","export enum RoleEnum {\r\n USER = 'ROLE_USER',\r\n ADMIN = 'ROLE_ADMIN'\r\n}","\r\nexport const msalConfig = {\r\n auth: {\r\n clientId: process.env.REACT_APP_SSO_CLIENT_ID ?? \"\",\r\n authority: process.env.REACT_APP_SSO_AUTHORITY ?? \"\", // This is a URL (e.g. https://login.microsoftonline.com/{your tenant ID})\r\n knownAuthorities: [process.env.REACT_APP_SSO_KNOWN_AUTHORITY ?? \"\"],\r\n redirectUri: \"/\",\r\n navigateToLoginRequestUrl: false,\r\n },\r\n cache: {\r\n cacheLocation: \"sessionStorage\", // This configures where your cache will be stored\r\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n }\r\n };\r\n \r\n // Add scopes here for ID token to be used at Microsoft identity platform endpoints.\r\n export const loginRequest = {\r\n scopes: [process.env.REACT_APP_SSO_SCOPE ?? \"openid\"]\r\n };\r\n\r\n","import {AxiosResponse} from 'axios';\r\nimport {APIService} from '../../shared/services/APIService';\r\nimport {DataStorage, KEY_ACCESS_TOKEN, KEY_AUTH_TYPE, KEY_SSO_USER} from '../../shared/constants';\r\nimport {LoginDTO} from '../dto/LoginDTO';\r\nimport {AuthUser} from '../models/AuthUser';\r\nimport {PublicClientApplication} from '@azure/msal-browser';\r\nimport {loginRequest, msalConfig} from '../../shared/config/ssoAuthConfig';\r\nimport {RoleEnum} from \"../../shared/enum/RoleEnum\";\r\n\r\n// Create an instance of PublicClientApplication\r\nconst msalInstance = new PublicClientApplication(msalConfig);\r\n\r\n// Handle the redirect flows\r\n// msalInstance\r\n// .handleRedirectPromise()\r\n// .then((tokenResponse) => {\r\n// console.log(tokenResponse)\r\n// // Handle redirect response\r\n// })\r\n// .catch((error) => {\r\n// // Handle redirect error\r\n// console.log(error)\r\n// });\r\n\r\nexport class AuthService extends APIService {\r\n\r\n constructor() {\r\n super(false);\r\n }\r\n\r\n static get accessToken() {\r\n return DataStorage.getItem(KEY_ACCESS_TOKEN);\r\n }\r\n\r\n static get user(): AuthUser | null {\r\n const token = AuthService.accessToken;\r\n\r\n if (!token) {\r\n return null;\r\n }\r\n\r\n if (DataStorage.getItem(KEY_AUTH_TYPE) === \"DEFAULT\") {\r\n const data = AuthService.decodeJWT(token);\r\n if (!data) {\r\n return null;\r\n }\r\n return data;\r\n }\r\n else {\r\n const userSSOString = DataStorage.getItem(KEY_SSO_USER)\r\n if (userSSOString) {\r\n const userSSO = JSON.parse(userSSOString)\r\n if (userSSO) {\r\n return userSSO\r\n }\r\n }\r\n return null\r\n }\r\n\r\n }\r\n\r\n static get isAuth() {\r\n const data = AuthService.user;\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n if ((data.exp * 1000) > Date.now()) {\r\n return true;\r\n }\r\n DataStorage.removeItem(KEY_ACCESS_TOKEN);\r\n return false;\r\n }\r\n\r\n /**\r\n * Decode a JWT\r\n */\r\n static decodeJWT(token: string) {\r\n let output = token.split('.')[1].replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (output.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n output += \"==\";\r\n break;\r\n case 3:\r\n output += \"=\";\r\n break;\r\n default:\r\n return null;\r\n }\r\n\r\n try {\r\n return JSON.parse(decodeURIComponent(atob(output).replace(/(.)/g, function (m, p) {\r\n let code = p.charCodeAt(0).toString(16).toUpperCase();\r\n if (code.length < 2) {\r\n code = '0' + code;\r\n }\r\n return '%' + code;\r\n })));\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Login\r\n */\r\n async login(dto: LoginDTO) {\r\n return this.http.post(`/auth/login`, dto)\r\n .then((result: AxiosResponse<{ accessToken: string; }>) => {\r\n DataStorage.setItem(KEY_ACCESS_TOKEN, result.data.accessToken);\r\n DataStorage.setItem(KEY_AUTH_TYPE, \"DEFAULT\")\r\n DataStorage.removeItem(KEY_SSO_USER)\r\n return AuthService.user;\r\n })\r\n .catch(() => {\r\n return null;\r\n });\r\n }\r\n\r\n async loginSSO() {\r\n // Popup\r\n // let auth\r\n // try {\r\n // console.log(msalInstance.getActiveAccount())\r\n // auth = await msalInstance.acquireTokenSilent(loginRequest)\r\n // }\r\n // catch (e) {\r\n // console.log(e)\r\n // try {\r\n // auth = await msalInstance.acquireTokenPopup(loginRequest)\r\n // }\r\n // catch (e) {\r\n // console.log(e)\r\n // }\r\n // }\r\n // console.log(\"auth :\", auth)\r\n\r\n // Redirect\r\n // let auth\r\n // try {\r\n // auth = await msalInstance.acquireTokenSilent(loginRequest)\r\n // }\r\n // catch (e) {\r\n // console.log(e)\r\n // try {\r\n // auth = await msalInstance.acquireTokenRedirect(loginRequest)\r\n // }\r\n // catch (e) {\r\n // console.log(e)\r\n // }\r\n // }\r\n // console.log(auth)\r\n\r\n // Just popup\r\n const auth = await msalInstance.acquireTokenPopup({...loginRequest})\r\n const user = {\r\n sub: auth.idTokenClaims[\"sub\"],\r\n email: auth.idTokenClaims[\"email\"],\r\n exp: auth.idTokenClaims[\"exp\"],\r\n role: auth.idTokenClaims[\"roles\"].includes(\"71300\") ? RoleEnum.ADMIN : RoleEnum.USER\r\n }\r\n DataStorage.setItem(KEY_ACCESS_TOKEN, auth.idToken);\r\n DataStorage.setItem(KEY_AUTH_TYPE, \"SSO\")\r\n DataStorage.setItem(KEY_SSO_USER, JSON.stringify(user))\r\n return user\r\n }\r\n\r\n /**\r\n * Logout\r\n */\r\n async logout() {\r\n DataStorage.removeItem(KEY_ACCESS_TOKEN);\r\n DataStorage.removeItem(KEY_SSO_USER);\r\n if (DataStorage.getItem(KEY_AUTH_TYPE) === \"SSO\") {\r\n await msalInstance.logoutPopup({})\r\n DataStorage.setItem(KEY_AUTH_TYPE, \"DEFAULT\")\r\n }\r\n }\r\n}","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport {AuthService} from \"../../login/services/AuthService\";\r\n\r\nexport class SubmissionService extends APIService {\r\n\r\n constructor() {\r\n super(true);\r\n }\r\n\r\n getUserSubmissions() {\r\n return this.http.get(\"/forms/default/submissions\")\r\n }\r\n\r\n saveLastSubmission(id: string, name: string) {\r\n return this.http.patch(\"/forms/default/submissions/save\", { id, name }, {\r\n headers: {\r\n \"Authorization\": \"Bearer \" + AuthService.accessToken\r\n }\r\n })\r\n }\r\n\r\n changeSubmissionName(id: string, name: string) {\r\n return this.http.patch(`/forms/default/submissions/name/${id}?name=` + name)\r\n }\r\n\r\n changeSubmissionDescription(id: string, description: string) {\r\n return this.http.patch(`/forms/default/submissions/description/${id}`, { description })\r\n }\r\n\r\n archiveSubmission(id: string) {\r\n return this.http.patch(\"/forms/default/submissions/archive/\" + id)\r\n }\r\n\r\n archiveMultipleSubmission(ids: string[]) {\r\n return this.http.patch(\"/forms/default/submissions/archive\", ids)\r\n }\r\n\r\n deleteSubmission(id: string) {\r\n return this.http.delete(\"/forms/default/submissions/\" + id)\r\n }\r\n}","import { Button, Content, Panel, Table } from \"@bbri/ui\";\r\nimport { TFunction } from \"i18next\";\r\nimport jsPDF from \"jspdf\";\r\nimport \"jspdf-autotable\";\r\nimport autoTable from \"jspdf-autotable\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { ChevronLeft, FileText } from \"react-feather\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { utils, writeFile } from \"xlsx\";\r\nimport { Form } from \"../models/Form\";\r\nimport { FormQuestion } from \"../models/FormQuestion\";\r\nimport { RequirementResult, RequirementResults } from \"../models/RequirementResults\";\r\nimport { FormUtils } from \"../utils/FormUtils\";\r\nimport \"./FormResults.scss\";\r\nimport { JsPDFUtils } from '../../shared/utils/JsPDFUtils';\r\nimport { FormService } from \"../services/FormService\";\r\nimport { AxiosResponse } from \"axios\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport ReactGA from \"react-ga\";\r\nimport { FileService } from \"../services/FileService\";\r\nimport { QuestionType } from \"../enum/QuestionType\";\r\nimport { Capacitor } from \"@capacitor/core\";\r\nimport { Browser } from \"@capacitor/browser\";\r\nimport FormPVGraph from \"./FormPVGraph\"\r\nimport { Dot } from \"../models/Dot\";\r\nimport { FormType } from \"../enum/FormType\";\r\nimport { DecisionTreeService } from \"../services/DecisionTreeService\";\r\nimport { DiagramCommentService } from \"../services/DiagramCommentService\";\r\nimport { DiagramService } from \"../services/DiagramService\";\r\nimport { Diagram } from \"../models/Diagram\"\r\nimport FormDiagram from \"./FormDiagram\"\r\nimport { DiagramComment } from \"../models/DiagramComment\";\r\nimport { DiagramDot } from \"../models/DiagramDot\";\r\nimport { ReactGAUtils } from \"../../shared/utils/ReactGAUtils\";\r\nimport { Graph } from \"../models/Graph\";\r\nimport draw2d from \"draw2d\";\r\nimport {Submission} from \"../../user/models/Submission\";\r\nimport {SubmissionService} from \"../../user/services/SubmissionService\";\r\nimport {AuthUser} from \"../../login/models/AuthUser\";\r\nimport {AuthService} from \"../../login/services/AuthService\";\r\nimport {ResponsesDTO} from \"../dto/ResponsesDTO\";\r\nimport {InputText} from \"primereact/inputtext\";\r\nimport {Toast} from \"primereact/toast\";\r\nimport {SeverityEnum} from \"../../shared/enum/SeverityEnum\";\r\nimport html2canvas from \"html2canvas\";\r\nimport {GraphPDFUtils} from \"../../shared/utils/GraphPDFUtils\";\r\n\r\ninterface Props extends WithTranslation {\r\n form: Form;\r\n history: number[];\r\n values: Record;\r\n idSubmittedSubmission: string | null\r\n submission?: Submission\r\n results: RequirementResult[];\r\n onResetClick: () => void;\r\n onPreviousClick: () => void;\r\n onlyResult?: boolean\r\n connected?: boolean\r\n}\r\n\r\ninterface States {\r\n openConfirmationModal: boolean;\r\n openSubmissionNameModal: boolean\r\n openSubmissionEditModal: boolean\r\n newSubmissionName: string\r\n htmlTable: string;\r\n allComments: DiagramComment[]\r\n graphInfo: Dot[] | string\r\n diagramName: string\r\n diagramInfo: Diagram | null\r\n}\r\n\r\nclass FormResults extends React.Component {\r\n private t: TFunction;\r\n private toast : Toast | null\r\n private xlsxData: any[];\r\n private formService: FormService;\r\n private isOnMobile: boolean = false;\r\n private html2render: string = '';\r\n private fileService: FileService;\r\n private decisionTreeService: DecisionTreeService\r\n private diagramCommentService: DiagramCommentService\r\n private diagramService: DiagramService\r\n private submissionService: SubmissionService\r\n private authService : AuthService\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.toast = null\r\n this.xlsxData = [];\r\n this.formService = new FormService();\r\n this.fileService = new FileService();\r\n this.decisionTreeService = new DecisionTreeService()\r\n this.diagramCommentService = new DiagramCommentService()\r\n this.diagramService = new DiagramService();\r\n this.submissionService = new SubmissionService()\r\n this.authService = new AuthService();\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n this.isOnMobile = true;\r\n }\r\n this.state = {\r\n openConfirmationModal: false,\r\n openSubmissionNameModal: false,\r\n openSubmissionEditModal: false,\r\n newSubmissionName: \"\",\r\n htmlTable: '',\r\n allComments: [],\r\n graphInfo: [],\r\n diagramName: \"\",\r\n diagramInfo: null\r\n };\r\n\r\n this.fileService.getOne('tableau-resultat').then((r) => {\r\n if (r.data.html) {\r\n this._replaceTagsInHTMLFile(r.data.html);\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n componentDidMount(): void {\r\n if (this.props.form.type === FormType.GRAPH) {\r\n this._getGraphInfo()\r\n this._getDiagramInfo()\r\n this._getComments()\r\n }\r\n }\r\n\r\n private _getGraphInfo() {\r\n if (this.props.form.graphDecisionTree) {\r\n this.decisionTreeService.computeDecisionTree(this.props.form.graphDecisionTree, this.props.values)\r\n .then(\r\n (r) => {\r\n if (typeof r !== \"string\") {\r\n this.setState({\r\n graphInfo: r as any as Dot[]\r\n })\r\n }\r\n else {\r\n this.setState({\r\n graphInfo: r as string\r\n })\r\n }\r\n }\r\n )\r\n .catch(\r\n (e) => {\r\n this.setState({\r\n graphInfo: e.message\r\n })\r\n }\r\n )\r\n }\r\n }\r\n\r\n private async _getDiagramInfo() {\r\n if (this.props.form.diagramDecisionTree) {\r\n try {\r\n const diagramName = await this.decisionTreeService.computeDecisionTree(this.props.form.diagramDecisionTree, this.props.values)\r\n const diagramInfo = await this.diagramService.getOneDiagramByName(diagramName as string)\r\n this.setState({\r\n diagramName: diagramName as string ?? \"\",\r\n diagramInfo: diagramInfo\r\n })\r\n }\r\n catch {\r\n this.setState({\r\n diagramInfo: null\r\n })\r\n }\r\n }\r\n }\r\n\r\n private _getComments() {\r\n this.diagramCommentService.getAllComments()\r\n .then((r) => {\r\n this.setState({\r\n allComments: r.data\r\n })\r\n })\r\n }\r\n\r\n private _replaceTagsInHTMLFile(htmlFile: string) {\r\n this.html2render = htmlFile;\r\n //Replace questions\r\n for (const qst of this.props.form.questions) {\r\n const replace = `{{question.${qst.question}}}`;\r\n const re = new RegExp(replace, 'g');\r\n if (this.html2render) {\r\n this.html2render = this.html2render.replace(re, ((qst.question in this.props.values) ? this.formService.t(this.t, qst.question, false) : ''));\r\n }\r\n }\r\n\r\n //Replace values\r\n for (const [key, value] of Object.entries(this.props.values)) {\r\n const replace = `{{value.${key}}}`;\r\n const re = new RegExp(replace, 'g');\r\n //Replace value as question table\r\n if (typeof value === 'object') {\r\n let question: any = null;\r\n let tableHeader = '';\r\n this.props.form.questions.forEach((q) => {\r\n if (q.question === key) {\r\n question = q;\r\n }\r\n });\r\n if (question.subQuestions) {\r\n for (const subQ of question.subQuestions) {\r\n tableHeader += `${this.formService.t(this.t, subQ.question, false)}`;\r\n }\r\n }\r\n let table: any = null;\r\n table = `${tableHeader}${this._getTableBody(question, value)}
`;\r\n this.html2render = this.html2render.replace(re, table);\r\n }\r\n else {\r\n switch (value) {\r\n case true:\r\n this.html2render = this.html2render.replace(re, this.formService.t(this.t, \"oui\", false));\r\n break;\r\n case false:\r\n this.html2render = this.html2render.replace(re, this.formService.t(this.t, \"non\", false));\r\n break;\r\n default:\r\n this.html2render = this.html2render.replace(re, this.formService.t(this.t, value, false));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n //Replace requirement\r\n for (const [i, value] of Object.entries(this.props.results)) {\r\n const replaceAnswer = `{{requirement.answer.${value.requirement}}}`;\r\n const replaceRequirement = `{{requirement.requirement.${value.requirement}}}`;\r\n const replaceRequirementTitle = `{{requirement.title.${value.requirement}}}`;\r\n\r\n if (value.answer && typeof value.answer === 'object') {\r\n this.html2render = this._replaceHtml(replaceAnswer, value.answer.map(x => this.formService.t(this.t, x, false)).join(''));\r\n }\r\n else {\r\n // @ts-ignore\r\n this.html2render = this._replaceHtml(replaceAnswer, value.answer);\r\n }\r\n this.html2render = this._replaceHtml(replaceRequirement, value.requirement);\r\n this.html2render = this._replaceHtml(replaceRequirementTitle, value.requirementTitle);\r\n }\r\n\r\n let result: any = null;\r\n const regex = new RegExp(/[{]{2}translation[.](.+?)[}]{2}/g);\r\n while (null !== (result = regex.exec(this.html2render))) {\r\n this.html2render = this.html2render.replace(`{{translation.${result[1]}}}`, this.formService.t(this.t, result[1], false));\r\n }\r\n\r\n let resultImage: any = null;\r\n const regexImage = new RegExp(/[{]{2}image[.](.+?)[}]{2}/g);\r\n while (null !== (resultImage = regexImage.exec(this.html2render))) {\r\n this.html2render = this.html2render.replace(`{{image.${resultImage[1]}}}`, this.formService.t(this.t, resultImage[1], false));\r\n }\r\n\r\n //Replace remaining tags\r\n const replace = `{{value.*?}}`;\r\n const re = new RegExp(replace, 'g');\r\n this.html2render = this.html2render.replace(re, '');\r\n const replace2 = `{{question.*?}}`;\r\n const re2 = new RegExp(replace2, 'g');\r\n this.html2render = this.html2render.replace(re2, '');\r\n const replace3 = `{{requirement.*?}}`;\r\n const re3 = new RegExp(replace3, 'g');\r\n this.html2render = this.html2render.replace(re3, '');\r\n const replace4 = `{{image.*?}}`;\r\n const re4 = new RegExp(replace4, 'g');\r\n this.html2render = this.html2render.replace(re4, '');\r\n\r\n let resultTitle: any = null;\r\n const regexTitle = new RegExp(/(<[hH]\\d.*?>)([^<]+?)(<\\/[hH]\\d.*?>)/, 'g');\r\n while (null !== (resultTitle = regexTitle.exec(this.html2render))) {\r\n this.html2render = this.html2render.replace(resultTitle[0], `${resultTitle[1]}${resultTitle[2].replace(/ /g, ' ')}${resultTitle[3]}`);\r\n }\r\n\r\n this.setState({\r\n htmlTable: this.html2render,\r\n openConfirmationModal: false,\r\n });\r\n }\r\n\r\n private _getTableBody(question: FormQuestion, value: any) {\r\n let tableBody = '';\r\n for (let i = 0; i < /*this._getSize(question)*/ value.length; i++) {\r\n tableBody += `${this._getTableRow(question, value[i], i)}`;\r\n }\r\n return tableBody;\r\n }\r\n\r\n private _getTableRow(question: FormQuestion, el: any, i: number) {\r\n let row = '';\r\n if (question.subQuestions) {\r\n for (const subQ of question.subQuestions) {\r\n if (subQ.type === QuestionType.PREVIOUS_QUESTION && this.props.values[subQ.target][i]) {\r\n row += `${this.props.values[subQ.target][i][subQ.question]}`;\r\n }\r\n else {\r\n // row += `${el[subQ.question]}`;\r\n row += `${this.formService.t(this.t, el[subQ.question], false)}`;\r\n }\r\n }\r\n }\r\n return row;\r\n }\r\n\r\n private getTodayDate() {\r\n const today = new Date();\r\n\r\n const month = today.getMonth() + 1;\r\n\r\n return `${today.getDate()}/${month < 10 ? '0' : ''}${month}/${today.getFullYear()}`;\r\n }\r\n\r\n /**\r\n * Export XLSX\r\n */\r\n exportXLSX() {\r\n const workbook = utils.book_new();\r\n\r\n // = Summary\r\n const summaryData = [\r\n [this.formService.t(this.t, \"ui_summary_date\", false), this.getTodayDate()],\r\n [this.formService.t(this.t, \"ui_summary_question\", false), this.formService.t(this.t, \"ui_summary_response\", false)],\r\n ];\r\n\r\n this.createSummaryTable(summaryData);\r\n\r\n const summaryWs = utils.aoa_to_sheet(summaryData);\r\n utils.book_append_sheet(workbook, summaryWs, this.formService.t(this.t, \"ui_summary_title\", false));\r\n\r\n // = Requirements\r\n const requirementsWs = utils.aoa_to_sheet(this.xlsxData);\r\n utils.book_append_sheet(\r\n workbook,\r\n requirementsWs,\r\n this.formService.t(this.t, \"ui_requirement_results_title\", false)\r\n );\r\n\r\n // = Disclaimer\r\n const disclaimerWs = utils.aoa_to_sheet([[this.formService.t(this.t, \"disclaimer_text\", false).replace('
', '\\n')]]);\r\n utils.book_append_sheet(\r\n workbook,\r\n disclaimerWs,\r\n this.formService.t(this.t, \"disclaimer_title\", false)\r\n );\r\n\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n this.formService.sendXLSX(this.props.form.form, workbook).then((response: AxiosResponse) => {\r\n if (Capacitor.isNativePlatform()) {\r\n Browser.open({ url: `${process.env.REACT_APP_API_URL}/` + response.data['link'] });\r\n } else {\r\n window.open(`${process.env.REACT_APP_API_URL}/` + response.data['link'], '_blank', 'location=no');\r\n }\r\n\r\n });\r\n }\r\n else {\r\n writeFile(workbook, \"cstc-results.xlsx\");\r\n }\r\n }\r\n\r\n /**\r\n * Export PDF\r\n */\r\n exportPDF() {\r\n // Document configured via backend\r\n if (this.state.htmlTable) {\r\n let clientWidth = 0;\r\n const element = document.getElementById(\"htmlTemplate\");\r\n let mainContainer;\r\n\r\n // if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n if (element) {\r\n clientWidth = element.clientWidth;\r\n element.style.width = \"1200px\";\r\n\r\n mainContainer = element.querySelector('.maincontainer');\r\n\r\n if (mainContainer) {\r\n mainContainer.classList.add('print');\r\n }\r\n // element.style.width = \"1702px\";\r\n }\r\n // }\r\n\r\n const pdf = new jsPDF('p', 'pt', 'a4');\r\n\r\n pdf.html(document.getElementById(\"htmlTemplate\") as HTMLElement, {\r\n y: 30,\r\n x: 30,\r\n html2canvas: {\r\n scale: 0.5,\r\n // width: 1702,\r\n // windowWidth: 1702,\r\n // scale: 0.4,\r\n svgRendering: true,\r\n // windowWidth: 1080,\r\n scrollX: 0,\r\n scrollY: 0\r\n },\r\n callback: () => {\r\n if (element) {\r\n element.style.width = clientWidth + \"px\";\r\n\r\n if (mainContainer) {\r\n mainContainer.classList.remove('print');\r\n }\r\n }\r\n\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n\r\n this.formService.sendPDF(this.props.form.form, pdf.output('blob')).then((response: AxiosResponse) => {\r\n if (Capacitor.isNativePlatform()) {\r\n Browser.open({ url: `${process.env.REACT_APP_API_URL}/` + response.data['link'] });\r\n } else {\r\n window.open(`${process.env.REACT_APP_API_URL}/` + response.data['link'], '_blank', 'location=no');\r\n }\r\n });\r\n // if(element) {\r\n // element.style.width = clientWidth+\"px\";\r\n // }\r\n }\r\n else {\r\n pdf.save(\"cstc-results.pdf\");\r\n }\r\n }\r\n });\r\n return;\r\n }\r\n\r\n // Default behavior\r\n JsPDFUtils.initJsPDF();\r\n\r\n const doc = new jsPDF();\r\n doc.setFont('Roboto-Bold', 'normal');\r\n doc.setFontSize(10);\r\n\r\n const headerHeight = 10;\r\n\r\n const langImage = new Image();\r\n langImage.src = this.formService.t(this.t, 'bbri_logo', false, false, false, true);\r\n doc.addImage(langImage, 'png', 13, 10, headerHeight * 3, headerHeight);\r\n\r\n const logoImage = new Image();\r\n logoImage.src = this.formService.t(this.t, 'logo_app', false, false, false, true);\r\n const logoImageRapport = logoImage.width > logoImage.height ? logoImage.width / logoImage.height : logoImage.height / logoImage.width;\r\n if (logoImageRapport > 2) {\r\n doc.addImage(logoImage, 'png', 210 - 5 * headerHeight, 10, (headerHeight) * logoImageRapport, headerHeight);\r\n }\r\n else {\r\n doc.addImage(logoImage, 'png', 210 - 5 * headerHeight, 10, (headerHeight) / logoImageRapport, headerHeight);\r\n }\r\n\r\n doc.setFontSize(7);\r\n doc.text('Version 1 - 15.01.21', 210 - 5 * headerHeight, headerHeight + 12);\r\n doc.setFontSize(10);\r\n\r\n autoTable(doc, {\r\n startY: headerHeight + 20,\r\n body: [\r\n [\r\n `${this.formService.t(this.t, \"ui_pdf_date\", false)} : ${this.getTodayDate()}`,\r\n ],\r\n ]\r\n });\r\n\r\n // = Summary\r\n doc.text(this.formService.t(this.t, \"ui_summary_title\", false), 13, (doc as any).autoTable.previous.finalY + 10);\r\n const summaryTable: any = {\r\n head: [\r\n [\r\n this.formService.t(this.t, \"ui_summary_question\", false),\r\n this.formService.t(this.t, \"ui_summary_response\", false)\r\n ]\r\n ],\r\n body: [],\r\n startY: (doc as any).autoTable.previous.finalY + 15,\r\n headStyles: {\r\n font: 'Roboto-Bold',\r\n fontStyle: 'normal'\r\n },\r\n styles: {\r\n font: 'Roboto-Regular',\r\n fontStyle: 'normal'\r\n }\r\n };\r\n\r\n this.createSummaryTable(summaryTable.body);\r\n\r\n autoTable(doc, summaryTable);\r\n\r\n // = Requirements\r\n doc.text(\r\n this.formService.t(this.t, \"ui_requirement_results_title\", false),\r\n 13,\r\n (doc as any).autoTable.previous.finalY + 10\r\n );\r\n\r\n\r\n const body: string[][][] = [];\r\n const myData = document.getElementById(\"table-results\") as HTMLTableElement;\r\n const myDataRows = myData.rows as any;\r\n for (const myDataRow of myDataRows) {\r\n if (myDataRow.cells.length === 3) {\r\n let el1 = myDataRow.cells[0].innerText;\r\n let el2 = myDataRow.cells[1].innerText.replace(/<\\/?[^>]+(>|$)/g, \"\");\r\n let el3 = myDataRow.cells[2].innerHTML\r\n .replace(/<\\/span>/g, '\\n\\n')\r\n .replace(/
  • /g, '\\n-')\r\n .replace(/<\\/li><\\/ul>/g, '\\n\\n')\r\n .replace(/<\\/?[^>]+(>|$)/g, \"\");\r\n body.push([el1, el2, el3]);\r\n }\r\n else {\r\n body.push(['', '', myDataRow.cells[0].innerHTML\r\n .replace('', '\\n\\n')\r\n .replace(/<\\/?[^>]+(>|$)/g, \"\")\r\n ]);\r\n }\r\n }\r\n let head = body[0];\r\n head.shift();\r\n head.unshift([\"\"]);\r\n body.shift();\r\n // @ts-ignore\r\n head[2] = head[2].replace(/<\\/?[^>]+(>|$)/g, \"\");\r\n\r\n doc.setFont('Roboto-Regular', 'normal');\r\n autoTable(doc, {\r\n head: [head],\r\n //html: \"#table-results\",\r\n startY: (doc as any).autoTable.previous.finalY + 15,\r\n body: body,\r\n headStyles: {\r\n font: 'Roboto-Bold',\r\n fontStyle: 'normal'\r\n },\r\n styles: {\r\n font: 'Roboto-Regular',\r\n fontStyle: 'normal'\r\n }\r\n });\r\n\r\n doc.setFont('Roboto-Regular', 'normal');\r\n doc.setFontSize(8);\r\n let y = (doc as any).autoTable.previous.finalY + 20;\r\n y = this.writeMultiLinesText(doc, this.formService.t(this.t, \"disclaimer_title\", false), y);\r\n this.writeMultiLinesText(doc, this.formService.t(this.t, \"disclaimer_text\", false), y);\r\n\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n\r\n this.formService.sendPDF(this.props.form.form, doc.output('blob')).then((response: AxiosResponse) => {\r\n if (Capacitor.isNativePlatform()) {\r\n Browser.open({ url: `${process.env.REACT_APP_API_URL}/` + response.data['link'] });\r\n } else {\r\n window.open(`${process.env.REACT_APP_API_URL}/` + response.data['link'], '_blank', 'location=no');\r\n }\r\n });\r\n }\r\n else {\r\n doc.save(\"cstc-results.pdf\");\r\n }\r\n }\r\n\r\n writeMultiLinesText(doc, text, y) {\r\n const pageHeight = doc.internal.pageSize.height;\r\n const lines = doc.splitTextToSize(text, 175);\r\n\r\n for (const line of lines) {\r\n if (y > pageHeight - 20) {\r\n doc.addPage();\r\n y = 15;\r\n }\r\n\r\n doc.text(line, 13, y);\r\n y += doc.getTextDimensions(text).h;\r\n }\r\n\r\n return y;\r\n }\r\n\r\n /**\r\n * Create sumary table\r\n */\r\n createSummaryTable(table: any[]) {\r\n FormUtils.formatValue(\r\n this.t,\r\n this.formService,\r\n this.props.form,\r\n this.props.history,\r\n this.props.values,\r\n (id: number, question: FormQuestion, value: string) => {\r\n let valueToRender = value;\r\n switch (question.type) {\r\n // case QuestionType.DROPDOWN:\r\n default:\r\n valueToRender = this.formService.t(this.t, value, false);\r\n break;\r\n }\r\n table.push([this.formService.t(this.t, question.question, false), valueToRender]);\r\n }\r\n );\r\n\r\n }\r\n\r\n /**\r\n * Create table row according to the results\r\n */\r\n createRowResults() {\r\n const data: ReactNode[] = [];\r\n this.xlsxData = [\r\n [\r\n \"\",\r\n this.formService.t(this.t, \"ui_requirement_results_requirement\", false, false, true),\r\n this.formService.t(this.t, \"ui_requirement_results_result\", false, false, true),\r\n ],\r\n ];\r\n\r\n const requirementMap = {};\r\n // = Sort by requirement\r\n for (const result of this.props.results) {\r\n if (!result.answer) {\r\n continue;\r\n }\r\n if (!requirementMap.hasOwnProperty(result.requirement)) {\r\n requirementMap[result.requirement] = [];\r\n }\r\n requirementMap[result.requirement].push(result);\r\n }\r\n\r\n for (const requirement in requirementMap) {\r\n const options = requirementMap[requirement];\r\n let optionI = 0;\r\n\r\n for (const option of options) {\r\n if (!option.answer) {\r\n continue;\r\n }\r\n let answers = \"\";\r\n\r\n\r\n if (option.prefix) {\r\n answers += `${this.formService.t(this.t, option.prefix, true, false, true)} `;\r\n }\r\n\r\n if (Array.isArray(option.answer)) {\r\n for (const answer of option.answer) {\r\n answers += this.formService.t(this.t, answer, true, false, true);\r\n }\r\n }\r\n else {\r\n answers = this.formService.t(this.t, option.answer, true, false, true);\r\n }\r\n\r\n if (option.suffix) {\r\n answers += ` ${this.formService.t(this.t, option.suffix, true, false, true)}`;\r\n }\r\n\r\n answers = answers.replace(/)/g, \"/g, \"\");\r\n\r\n // = For XLSX data export\r\n\r\n // Remove HTML tags\r\n let results = answers.replace(//g, \"\\n\");\r\n results = results.replace(/<\\/?[A-Za-z]+>/g, \"\");\r\n this.xlsxData.push([\r\n requirement.toUpperCase(),\r\n this.formService.t(this.t, option.requirementTitle, false),\r\n results,\r\n ]);\r\n\r\n // = Render\r\n if (optionI === 0) {\r\n data.push(\r\n \r\n {requirement.toUpperCase()}\r\n \r\n {this.formService.t(this.t, option.requirementTitle, true)}\r\n \r\n \r\n \r\n );\r\n }\r\n else {\r\n data.push(\r\n \r\n \r\n \r\n );\r\n }\r\n optionI++;\r\n }\r\n }\r\n return data;\r\n }\r\n\r\n\r\n private openConfirmation(props: Props) {\r\n //props.onResetClick();\r\n }\r\n\r\n private async loginAndSave() {\r\n const user = await this.authService.loginSSO()\r\n this.setState({\r\n openSubmissionNameModal: true\r\n })\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
    \r\n this.setState({ openConfirmationModal: !this.state.openConfirmationModal })}\r\n >\r\n {this.formService.t(this.t, \"ui_input_no\", true)}\r\n \r\n {\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'click',\r\n label: 'Nouveau formulaire'\r\n });\r\n this.props.onResetClick();\r\n }}>\r\n {this.formService.t(this.t, \"ui_input_yes\", true)}\r\n \r\n
    \r\n );\r\n }\r\n\r\n private _replaceHtml(replaceElement: string, value: string) {\r\n const re = new RegExp(replaceElement, 'g');\r\n return this.html2render.replace(re, this.formService.t(this.t, value, false));\r\n }\r\n\r\n private _getTableResult() {\r\n if (this.html2render) {\r\n return (
    );\r\n }\r\n else if (this.props.form.type === FormType.GRAPH) {\r\n return (\r\n
    \r\n {this.state.graphInfo.length > 0 && Array.isArray(this.state.graphInfo) ? (\r\n <>\r\n
    \r\n

    {this.formService.t(this.t, \"ui_result_graph_title\", true)}

    \r\n
    \r\n
    \r\n
    \r\n {this.props.results.map(\r\n r =>

    {this.formService.t(this.t, r.requirementTitle, false)} : {this.formService.t(this.t, r.answer.toString().toLowerCase(), false)}

    \r\n )}\r\n
    \r\n \r\n {this.formService.t(this.t, \"ui_graph_notes\", false)}\r\n \r\n \r\n
    \r\n \r\n ) : (\r\n <>\r\n
    \r\n

    {this.formService.t(this.t, this.state.graphInfo.toString(), false)}

    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.props.results.map(\r\n r =>

    {this.formService.t(this.t, r.requirementTitle, false)} : {this.formService.t(this.t, r.answer.toString().toLowerCase(), false)}

    \r\n )}\r\n
    \r\n \r\n )}\r\n {this.state.diagramInfo && (\r\n <>\r\n

    {this.formService.t(this.t, \"ui_result_diagram_title\", true)}

    \r\n \r\n \r\n )}\r\n
    \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.createRowResults()}\r\n
    \r\n {this.formService.t(this.t, \"ui_requirement_results_requirement\", true)}\r\n \r\n {this.formService.t(this.t, \"ui_requirement_results_result\", true)}\r\n
    );\r\n }\r\n }\r\n\r\n\r\n render() {\r\n window.scroll(0, 0);\r\n\r\n return (\r\n
    \r\n (this.toast = el)}/>\r\n
    \r\n \r\n \r\n
    \r\n

    {this.formService.t(this.t, \"ui_requirement_results_title\", true)}

    \r\n {this.props.form.type === FormType.REQUIREMENT && (\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n {\r\n this._getTableResult()\r\n }\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.createRowResults()}\r\n
    \r\n {this.formService.t(this.t, \"ui_requirement_results_requirement\", true)}\r\n \r\n {this.formService.t(this.t, \"ui_requirement_results_result\", true)}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {!this.props.onlyResult && (\r\n this.props.onPreviousClick()}\r\n >\r\n \r\n {this.formService.t(this.t, \"ui_requirement_results_button_back_summary\", true)}\r\n \r\n )}\r\n
    \r\n
    \r\n {this.props.connected && !this.props.onlyResult && (\r\n <>\r\n \r\n {this.props.submission && (\r\n \r\n )}\r\n \r\n )}\r\n {this.props.connected && (\r\n \r\n )}\r\n {(!this.props.connected && !this.props.onlyResult) && (\r\n \r\n )}\r\n \r\n
    \r\n
    \r\n
    \r\n this.setState({ openConfirmationModal: false })}\r\n >\r\n
    \r\n \r\n {this.formService.t(this.t, \"ui_new_form_confirmation_body\", true)}\r\n\r\n
    \r\n\r\n \r\n (document.activeElement as HTMLElement).blur()}\r\n style={this.isOnMobile ? { width: \"95%\" } : { width: \"450px\" }}\r\n onHide={() => this.setState({ openSubmissionNameModal: false })}\r\n >\r\n this.setState({ newSubmissionName: e.target.value})}>\r\n
    \r\n \r\n
    \r\n \r\n (document.activeElement as HTMLElement).blur()}\r\n style={this.isOnMobile ? { width: \"95%\" } : { width: \"450px\" }}\r\n onHide={() => this.setState({ openSubmissionEditModal: false })}\r\n >\r\n
    \r\n \r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n\r\n}\r\n\r\nexport default withTranslation()(FormResults);\r\n","import { TFunction } from \"i18next\";\r\nimport React, { Component, MouseEvent, ReactNode } from \"react\";\r\nimport { X } from \"react-feather\";\r\nimport { WithTranslation, withTranslation } from \"react-i18next\";\r\nimport { Form } from \"../models/Form\";\r\nimport { DecisionTreeService } from \"../services/DecisionTreeService\";\r\nimport { FormUtils } from \"../utils/FormUtils\";\r\nimport \"./FormStepper.scss\";\r\nimport { FormService } from \"../services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n form: Form;\r\n history: number[];\r\n currentQuestion: number;\r\n displaySummaryStep: boolean;\r\n values: Record;\r\n onStepClick: (questionId: number) => void;\r\n}\r\n\r\ninterface States {\r\n steps: ReactNode[];\r\n isMobile: boolean;\r\n verticalStepper: boolean;\r\n}\r\n\r\nclass FormStepper extends Component {\r\n private t: TFunction;\r\n private decisionTreeService: DecisionTreeService;\r\n private currentStep: number;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n this.decisionTreeService = new DecisionTreeService();\r\n this.currentStep = 0;\r\n\r\n this.state = {\r\n steps: [],\r\n isMobile: window.innerWidth < 768,\r\n verticalStepper: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener(\"resize\", this.resize.bind(this));\r\n this.generateStepper();\r\n this.props.i18n.on(\"languageChanged\", this.generateStepper.bind(this));\r\n }\r\n\r\n resize() {\r\n this.setState({\r\n isMobile: window.innerWidth < 768,\r\n verticalStepper: false,\r\n });\r\n }\r\n\r\n componentDidUpdate() {\r\n if (this.currentStep !== this.props.currentQuestion) {\r\n this.currentStep = this.props.currentQuestion;\r\n this.generateStepper();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.resize.bind(this));\r\n this.props.i18n.off(\"languageChanged\", this.generateStepper.bind(this));\r\n }\r\n\r\n async generateStepper() {\r\n const steps: ReactNode[] = [];\r\n const cache = new Map();\r\n\r\n const values = FormUtils.getValidValues(this.props.form.questions, this.props.values, this.props.history, this.props.currentQuestion, true);\r\n\r\n for (let i = 0; i < this.props.form.questions.length; i++) {\r\n const question = this.props.form.questions[i];\r\n const isCurrentQuestion = i === this.props.currentQuestion;\r\n\r\n if (isCurrentQuestion) {\r\n steps.push(this.createStep(i, question.shortTitle, false, true));\r\n }\r\n else if (this.props.history.includes(i)) {\r\n steps.push(this.createStep(i, question.shortTitle, true));\r\n }\r\n else if (\r\n !question.conditions ||\r\n (await FormUtils.checkCondition(\r\n this.decisionTreeService,\r\n question.conditions.lhs,\r\n question.conditions.operator,\r\n question.conditions.rhs,\r\n values,\r\n cache\r\n ))\r\n ) {\r\n steps.push(this.createStep(i, question.shortTitle));\r\n }\r\n }\r\n\r\n if (this.props.displaySummaryStep) {\r\n steps.push(this.createStep(-1, \"ui_summary_title\"));\r\n }\r\n\r\n this.setState({\r\n steps,\r\n });\r\n }\r\n\r\n /**\r\n * Handle: onClick on stepper\r\n *\r\n * For mobile & tablet device\r\n */\r\n handleStepperClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (!this.state.isMobile) {\r\n return;\r\n }\r\n\r\n // Toggle vertical stepper\r\n this.setState({\r\n verticalStepper: !this.state.verticalStepper,\r\n });\r\n }\r\n\r\n /**\r\n * Handle: on Click on step item\r\n */\r\n handleStepClick(questionId: number) {\r\n this.props.onStepClick(questionId);\r\n\r\n if (this.state.verticalStepper) {\r\n this.setState({\r\n verticalStepper: false,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n let stepperClassName = \"form-stepper-wrapper\";\r\n\r\n if (this.state.isMobile && this.state.verticalStepper) {\r\n stepperClassName += \" vertical-form-stepper\";\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n this.state.isMobile && !this.state.verticalStepper\r\n ? this.handleStepperClick(e)\r\n : null\r\n }>\r\n
      \r\n {this.state.steps}\r\n
    \r\n
    \r\n {this.state.verticalStepper ? (\r\n this.handleStepperClick(e)}\r\n >\r\n \r\n \r\n ) : null}\r\n
    \r\n );\r\n }\r\n\r\n private createStep(\r\n id: number,\r\n title: string,\r\n active: boolean = false,\r\n current: boolean = false\r\n ) {\r\n let liClassName = \"\";\r\n const canClicked = active || id === -1;\r\n\r\n // = Summary step\r\n if (id === -1) {\r\n liClassName += \"form-step-summary \";\r\n }\r\n\r\n // = Step answered\r\n if (active) {\r\n liClassName += \"form-step-active \";\r\n }\r\n\r\n // = Current step\r\n if (current) {\r\n liClassName += \"form-step-current \";\r\n }\r\n\r\n return (\r\n \r\n (canClicked && !this.state.isMobile) ||\r\n (canClicked && this.state.isMobile && this.state.verticalStepper)\r\n ? this.handleStepClick(id)\r\n : null\r\n }\r\n >\r\n \r\n {this.formService.t(this.t, title, true)}\r\n
  • \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormStepper);\r\n","import { Button, Content, Panel, Table } from \"@bbri/ui\";\r\nimport { TFunction } from \"i18next\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { ChevronLeft, Send } from \"react-feather\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { ResponsesDTO } from \"../dto/ResponsesDTO\";\r\nimport { Form } from \"../models/Form\";\r\nimport { FormQuestion } from \"../models/FormQuestion\";\r\nimport { RequirementResults } from \"../models/RequirementResults\";\r\nimport { FormService } from \"../services/FormService\";\r\nimport { FormUtils } from \"../utils/FormUtils\";\r\nimport \"./FormSummary.scss\";\r\nimport { QuestionType } from '../enum/QuestionType';\r\nimport { RichText } from 'prismic-reactjs';\r\nimport { Submission } from \"../../user/models/Submission\";\r\nimport { SubmissionDTO } from \"../dto/SubmissionDTO\";\r\nimport {SubmissionSubmitDTO} from \"../dto/SubmissionSubmitDTO\";\r\n\r\ninterface Props extends WithTranslation {\r\n form: Form;\r\n history: number[];\r\n values: Record;\r\n submission?: Submission\r\n connected?: boolean\r\n onPreviousClick: () => void;\r\n onQuestionClick: (questionId: number) => void;\r\n onSubmitForm: (results: RequirementResults, id: string) => void;\r\n}\r\n\r\ninterface States {\r\n submitButton: boolean;\r\n}\r\n\r\nclass FormSummary extends React.Component {\r\n private formService: FormService;\r\n private t: TFunction;\r\n private isOnMobile: boolean = false;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n this.isOnMobile = true;\r\n }\r\n this.state = {\r\n submitButton: false\r\n };\r\n }\r\n\r\n /**\r\n * Submit the form\r\n */\r\n handleSubmitClick() {\r\n this.setState({\r\n submitButton: true\r\n });\r\n // = Get values according the history\r\n const values: Record = {};\r\n for (let i = 0; i < this.props.history.length; i++) {\r\n const id = this.props.history[i];\r\n const question = this.props.form.questions[id];\r\n\r\n if (question.type === QuestionType.MULTIPLE && question.subQuestions) {\r\n for (const subQ of question.subQuestions) {\r\n values[subQ.question] = this.props.values[subQ.question] ?? 0;\r\n }\r\n }\r\n else {\r\n values[question.question] = this.props.values[question.question];\r\n }\r\n }\r\n\r\n // = Send DTO\r\n const dto : SubmissionDTO = {\r\n responses: (new ResponsesDTO(values)).responses,\r\n history: this.props.history,\r\n name: \"\"\r\n }\r\n this.formService\r\n .submitForm(this.props.form.form, dto)\r\n .then((data: SubmissionSubmitDTO) => {\r\n this.setState({\r\n submitButton: false\r\n });\r\n this.props.onSubmitForm({ results: data.results }, data.id);\r\n });\r\n }\r\n\r\n private _getTableBody(question: FormQuestion, value: any) {\r\n const tableBody: any[] = [];\r\n for (let i = 0; i < /*this._getSize(question)*/ value.length; i++) {\r\n tableBody.push(\r\n \r\n {this._getTableRow(question, value[i], i)}\r\n \r\n );\r\n }\r\n return tableBody;\r\n }\r\n\r\n private _getSize(question: FormQuestion): number {\r\n let sizeQuestion: any = null;\r\n for (const q of this.props.form.questions) {\r\n if (q.question === question.size.target) {\r\n sizeQuestion = q;\r\n }\r\n }\r\n\r\n if (sizeQuestion && sizeQuestion.size) {\r\n return this._getSize(sizeQuestion);\r\n }\r\n\r\n return this.props.values[sizeQuestion.question];\r\n }\r\n\r\n private _getTableRow(question: FormQuestion, el: any, i: number) {\r\n const row: any[] = [];\r\n if (question.subQuestions) {\r\n for (const subQ of question.subQuestions) {\r\n if (subQ.type === QuestionType.PREVIOUS_QUESTION && this.props.values[subQ.target][i]) {\r\n row.push(\r\n {this.props.values[subQ.target][i][subQ.question]}\r\n );\r\n }\r\n else {\r\n switch (subQ.type) {\r\n case QuestionType.DROPDOWN:\r\n row.push(\r\n {RichText.asText(this.t(el[subQ.question], { returnObjects: true }))}\r\n );\r\n break;\r\n\r\n default:\r\n row.push(\r\n {el[subQ.question]}\r\n );\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return row;\r\n }\r\n\r\n render() {\r\n const data: ReactNode[] = [];\r\n window.scroll(0, 0);\r\n FormUtils.formatValue(\r\n this.t,\r\n this.formService,\r\n this.props.form,\r\n this.props.history,\r\n this.props.values,\r\n (id: number, question: FormQuestion, value: any) => {\r\n if (question.toDisplayInSummary === false) {\r\n return;\r\n }\r\n switch (question.type) {\r\n case QuestionType.NUMBER:\r\n data.push(\r\n this.props.onQuestionClick(id)}\r\n >\r\n {this.formService.t(this.t, question.question, true, false)}\r\n {(value === '' ? (`0 ${this.formService.t(this.t, question.unit as any, false, false)}`.replace(\"undefined\", \"\")) : value)}\r\n \r\n );\r\n break;\r\n case QuestionType.CHECKBOX:\r\n value = value.map(x => (this.formService.t(this.t, x, true, false)) + ', ');\r\n data.push(\r\n this.props.onQuestionClick(id)}\r\n >\r\n {this.formService.t(this.t, question.question, true, false)}\r\n {value}\r\n \r\n );\r\n break;\r\n case QuestionType.MULTIPLE:\r\n if (question.subQuestions) {\r\n for (const qst of question.subQuestions) {\r\n if (typeof this.props.values[qst.question] === \"boolean\") {\r\n data.push(\r\n this.props.onQuestionClick(id)}\r\n >\r\n {this.formService.t(this.t, qst.question, true, false)}\r\n {this.formService.t(this.t, (this.props.values[qst.question]) ? 'oui' : 'non', true, false)}\r\n \r\n );\r\n }\r\n else {\r\n data.push(\r\n this.props.onQuestionClick(id)}\r\n >\r\n {this.formService.t(this.t, qst.question, true, false)}\r\n {this.formService.t(this.t, this.props.values[qst.question], true, false)}\r\n \r\n );\r\n }\r\n }\r\n }\r\n break;\r\n case QuestionType.TABLE:\r\n const tableHeader: any[] = [];\r\n if (question.subQuestions) {\r\n for (let i = 0; i < question.subQuestions.length; i++) {\r\n const subQ = question.subQuestions[i];\r\n\r\n tableHeader.push(\r\n \r\n {this.formService.t(this.t, subQ.question, true, false)}\r\n \r\n );\r\n }\r\n }\r\n data.push(\r\n this.props.onQuestionClick(id)}\r\n >\r\n {this.formService.t(this.t, question.question, true, false)}\r\n \r\n \r\n \r\n \r\n {tableHeader}\r\n \r\n \r\n \r\n {this._getTableBody(question, value)}\r\n \r\n
    \r\n \r\n \r\n );\r\n case QuestionType.TEXT_ONLY:\r\n break;\r\n default:\r\n data.push(\r\n this.props.onQuestionClick(id)}\r\n >\r\n {this.formService.t(this.t, question.question, true, false)}\r\n {this.formService.t(this.t, value, true, false)}\r\n \r\n );\r\n break;\r\n }\r\n }\r\n );\r\n\r\n return (\r\n
    \r\n \r\n \r\n

    {this.formService.t(this.t, \"ui_summary_title\", true)}

    \r\n
    \r\n \r\n {this.formService.t(this.t, \"ui_summary_notes\", false)}\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {data}\r\n
    {this.formService.t(this.t, \"ui_summary_question\", true)}{this.formService.t(this.t, \"ui_summary_response\", true)}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.props.onPreviousClick()}\r\n >\r\n {this.formService.t(this.t, \"button_previous\", false, true)}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormSummary);\r\n","import { APIService } from '../../shared/services/APIService';\r\n\r\nexport class TranslationService extends APIService {\r\n async get(code: string) {\r\n return this.http.get(`/translations/${code}`);\r\n }\r\n}\r\n","import { Input } from \"@bbri/ui\";\r\nimport { TFunction } from \"i18next\";\r\nimport React from \"react\";\r\nimport { WithTranslation, withTranslation } from \"react-i18next\";\r\nimport { FormQuestion } from \"../models/FormQuestion\";\r\nimport { FormService } from \"../services/FormService\";\r\nimport \"./FormLongText.scss\";\r\n\r\ninterface Props extends WithTranslation {\r\n question: FormQuestion;\r\n value: any;\r\n onValueChange: (v: any) => void;\r\n}\r\n\r\nclass FormLongText extends React.Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n this.props.onValueChange(e.target.value)}\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormLongText);\r\n","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { TFunction } from \"i18next\";\r\nimport { FormService } from \"../services/FormService\";\r\nimport { Checkbox } from \"@bbri/ui\";\r\nimport { FormQuestion } from \"../models/FormQuestion\";\r\n\r\ninterface Props extends WithTranslation {\r\n question: FormQuestion;\r\n currentValues: string[];\r\n values: any[];\r\n onValueChange: (v: any) => void;\r\n name: string;\r\n}\r\n\r\nclass FormCheckbox extends React.Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n private valueList: string[] = [];\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n }\r\n\r\n onValueChange(v: any) {\r\n this.setState({ ...this.state, value: v });\r\n }\r\n\r\n render() {\r\n const list: ReactNode[] = [];\r\n const values = this.props.currentValues;\r\n for (let i = 0; i < values.length; i++) {\r\n const value = values[i];\r\n const key = `${this.props.name}${i}`;\r\n list.push(\r\n \r\n {\r\n this.props.onValueChange(value);\r\n }}\r\n />\r\n \r\n );\r\n }\r\n\r\n return list;\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormCheckbox);\r\n","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport React, { ReactNode } from \"react\";\r\nimport { TFunction } from \"i18next\";\r\nimport { FormService } from \"../services/FormService\";\r\nimport { FormQuestion } from \"../models/FormQuestion\";\r\nimport \"./FormTable.scss\";\r\nimport { QuestionType } from \"../enum/QuestionType\";\r\nimport FormInputNumber from \"./FormInputNumber\";\r\nimport FormDropdown from \"./FormDropdown\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Input } from \"@bbri/ui\";\r\n\r\ninterface States {\r\n values: any[],\r\n size: number,\r\n dropDownValues: {};\r\n}\r\n\r\n\r\ninterface Props extends WithTranslation {\r\n question: FormQuestion;\r\n currentValues: string[];\r\n values: any[];\r\n onValueChange: (v: any) => void;\r\n name: string;\r\n questionHistory: any;\r\n questions: any;\r\n onSizeChange: () => void;\r\n}\r\n\r\nclass FormTable extends React.Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n\r\n if (this.props.question.size.type === \"previous_question\") {\r\n if (typeof this.props.questionHistory[this.props.question.size.target] === 'string') {\r\n this.state = {\r\n values: this.props.values ?? [],\r\n size: this.props.questionHistory[this.props.question.size.target],\r\n dropDownValues: {}\r\n };\r\n }\r\n else {\r\n this.state = {\r\n values: this.props.values ?? [],\r\n size: this.props.questionHistory[this.props.question.size.target]?.length ?? 0,\r\n dropDownValues: {}\r\n };\r\n }\r\n }\r\n else {\r\n let length;\r\n if (this.props.values?.length) {\r\n length = this.props.values?.length;\r\n }\r\n else if (this.props.question.size.value) {\r\n length = this.props.question.size.value;\r\n }\r\n else {\r\n length = this.props.question.size;\r\n }\r\n this.state = {\r\n values: this.props.values ?? [],\r\n size: (this.props.question.size.type === 'dynamic') ? (this.props.question.size.min ?? this.props.values?.length) : length,\r\n dropDownValues: {}\r\n };\r\n }\r\n if (!this.props.values) {\r\n for (let i = 0; i < this.state.size; i++) {\r\n this.state.values.push({});\r\n }\r\n }\r\n if (this.props.values) {\r\n // TODO CHECK\r\n }\r\n }\r\n\r\n componentDidMount(): void {\r\n this.setState({\r\n values: this.props.values\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly) {\r\n if ((this.props.question.question !== prevProps.question.question) && this.props.questionHistory[this.props.question.question]?.length === 0) {\r\n this.setState({\r\n values: this.props.values\r\n });\r\n }\r\n }\r\n\r\n onValueChange(v: any) {\r\n //this.setState({...this.state});\r\n }\r\n\r\n onResultChange(subQuestion: FormQuestion, value: any, column: number, row: number) {\r\n if ((JSON.stringify(this.props.values) !== JSON.stringify(this.state.values))) {\r\n this.setState({\r\n values: this.props.values\r\n });\r\n }\r\n\r\n if (!this.state.values[row]) {\r\n for (let i = 0; i <= row; i++) {\r\n if (!this.state.values[i]) {\r\n this.state.values.push({});\r\n }\r\n if (i === row) {\r\n this.state.values[row][subQuestion.question] = value;\r\n }\r\n }\r\n }\r\n else {\r\n this.setState({\r\n values: [\r\n ...this.props.values.slice(0, row),\r\n Object.assign(this.props.values[row], { [subQuestion.question]: value }),\r\n ...this.props.values.slice(row + 1)\r\n ]\r\n });\r\n }\r\n }\r\n\r\n private _createTableBody() {\r\n const list: ReactNode[] = [];\r\n for (let row = 0; row < this.state.size; row++) {\r\n if (this.props.question.subQuestions) {\r\n list.push({this._createTableLine(row)});\r\n }\r\n }\r\n return list;\r\n }\r\n\r\n private _createTableLine(row: number) {\r\n const list: ReactNode[] = [];\r\n\r\n if (this.props.question.subQuestions) {\r\n for (let column = 0; column < this.props.question.subQuestions.length; column++) {\r\n if (this.props.question.subQuestions[column].type === QuestionType.PREVIOUS_QUESTION) {\r\n\r\n for (const question of this.props.questions) {\r\n if (question.question === this.props.question.subQuestions[column].target) {\r\n for (const subQ of question.subQuestions) {\r\n if (subQ.question === this.props.question.subQuestions[column].question) {\r\n list.push(this._getHtml(subQ, row, column, this.props.questionHistory[this.props.question.subQuestions[column].target]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n else if (this.props.question.subQuestions[column].type === QuestionType.DECISION_TREE) {\r\n list.push(this._getHtml(this.props.question.subQuestions[column], row, column, ((this.props.values[row]) ? this.props.values[row][this.props.question.subQuestions[column].question] : null)));\r\n }\r\n else {\r\n list.push(this._getHtml(this.props.question.subQuestions[column], row, column));\r\n }\r\n }\r\n }\r\n\r\n return list;\r\n }\r\n\r\n private _createTableHeader() {\r\n const list: ReactNode[] = [];\r\n\r\n if (this.props.question.subQuestions) {\r\n for (let i = 0; i < this.props.question.subQuestions.length; i++) {\r\n const subQuestion = this.props.question.subQuestions[i];\r\n\r\n list.push({this.formService.t(this.t, subQuestion.question, true, false)});\r\n }\r\n }\r\n\r\n return list;\r\n }\r\n\r\n static getDerivedStateFromProps(props: any, state: any) {\r\n if ((JSON.stringify(props.values) !== JSON.stringify(state.values))) {\r\n return {\r\n ...state,\r\n values: props.values\r\n };\r\n }\r\n return state;\r\n }\r\n\r\n render() {\r\n\r\n const list: ReactNode[] = [];\r\n let button: any[] = [];\r\n if (this.props.question.size.type && this.props.question.size.type === 'dynamic') {\r\n button.push(
    \r\n this.addRow()}\r\n />\r\n this.rmRow()}\r\n />\r\n
    );\r\n }\r\n\r\n list.push(\r\n
    \r\n \r\n \r\n \r\n {this._createTableHeader()}\r\n \r\n \r\n \r\n {this._createTableBody()}\r\n \r\n
    \r\n {button}\r\n
    \r\n );\r\n return list;\r\n }\r\n\r\n private addRow() {\r\n if (this.props.question.size.max && this.state.size < this.props.question.size.max) {\r\n this.setState({\r\n size: this.state.size + 1\r\n });\r\n this.props.values.push({});\r\n this.props.onSizeChange();\r\n }\r\n }\r\n\r\n\r\n private rmRow() {\r\n if ((this.props.question.size.min && this.state.size > this.props.question.size.min)) {\r\n this.rmRowAction();\r\n }\r\n else if (!this.props.question.size.min && this.state.size > 0) {\r\n this.rmRowAction();\r\n }\r\n }\r\n\r\n private rmRowAction() {\r\n this.setState({\r\n size: this.state.size - 1\r\n });\r\n if (Object.keys(this.state.dropDownValues).length > this.state.size) {\r\n this.setState({\r\n ...this.state.dropDownValues,\r\n [this.state.size]: undefined\r\n });\r\n }\r\n this.props.values.pop();\r\n this.props.onSizeChange();\r\n }\r\n\r\n private _getHtml(formQuestion: FormQuestion, row: number, column: number, values?: any) {\r\n const key = `${formQuestion.type}-${row}-${column}`;\r\n\r\n switch (formQuestion.type) {\r\n case QuestionType.STRING:\r\n if (!values) {\r\n return (\r\n \r\n {\r\n this.props.onValueChange(this.state.values);\r\n if (this.props.question.subQuestions) {\r\n this.onResultChange(formQuestion, (v.target as any).value, column, row);\r\n }\r\n }}\r\n disabled={values}\r\n />\r\n );\r\n }\r\n else {\r\n return (\r\n \r\n

    {values[row] ? values[row][formQuestion.question] : ''}

    \r\n \r\n );\r\n }\r\n case QuestionType.NUMBER:\r\n if (!values) {\r\n return (\r\n \r\n 0 && this.props.values[row] && this.props.values[row][formQuestion.question]) ? this.props.values[row][formQuestion.question] : 0}\r\n onValueChange={(v) => {\r\n if (this.props.question.subQuestions) {\r\n this.onResultChange(formQuestion, v, column, row);\r\n }\r\n this.props.onValueChange(this.state.values);\r\n }}\r\n onBlur={(question, v) => {\r\n return this.onValueChange;\r\n }}\r\n disabled={values}\r\n />\r\n \r\n );\r\n }\r\n else {\r\n return (\r\n \r\n

    {(values[row]) ? values[row][formQuestion.question] : null}

    \r\n \r\n );\r\n }\r\n case QuestionType.DROPDOWN:\r\n if (!values) {\r\n return (\r\n \r\n {\r\n this.props.onValueChange(this.state.values);\r\n this.setState({\r\n dropDownValues: {\r\n ...this.state.dropDownValues,\r\n [row]: v\r\n }\r\n });\r\n if (this.props.question.subQuestions) {\r\n this.onResultChange(formQuestion, v, column, row);\r\n }\r\n }}\r\n disabled={values}\r\n />\r\n \r\n );\r\n }\r\n else {\r\n return (\r\n \r\n

    {values[row][formQuestion.question]}

    \r\n \r\n );\r\n }\r\n\r\n case QuestionType.DECISION_TREE:\r\n return (\r\n \r\n

    {values}

    \r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormTable);\r\n","import { Button, Input, Question } from \"@bbri/ui\";\r\nimport i18n, { TFunction } from \"i18next\";\r\nimport React, { Component, ReactNode } from \"react\";\r\nimport { ChevronLeft, ChevronRight, FastForward } from \"react-feather\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { RouteComponentProps, withRouter } from \"react-router\";\r\nimport ImageWrapper from \"./../shared/components/ImageWrapper\";\r\nimport FormBool from \"./components/FormBool\";\r\nimport FormDropdown from \"./components/FormDropdown\";\r\nimport FormFeedback from \"./components/FormFeedback\";\r\nimport FormInputNumber from \"./components/FormInputNumber\";\r\nimport FormMatrix from \"./components/FormMatrix\";\r\nimport FormRadioImage from \"./components/FormRadioImage\";\r\nimport FormRadioList from \"./components/FormRadioList\";\r\nimport FormResults from \"./components/FormResults\";\r\nimport FormStepper from \"./components/FormStepper\";\r\nimport FormSummary from \"./components/FormSummary\";\r\nimport { QuestionType } from \"./enum/QuestionType\";\r\nimport \"./FormPage.scss\";\r\nimport { Form } from \"./models/Form\";\r\nimport { FormQuestion } from \"./models/FormQuestion\";\r\nimport { RequirementResult, RequirementResults, } from \"./models/RequirementResults\";\r\nimport { DecisionTreeService } from \"./services/DecisionTreeService\";\r\nimport { FormService } from \"./services/FormService\";\r\nimport { FormUtils } from \"./utils/FormUtils\";\r\nimport { RichText } from 'prismic-reactjs';\r\nimport { TranslationService } from './services/TranslationService';\r\nimport FormLongText from './components/FormLongText';\r\nimport ReactGA from 'react-ga';\r\nimport FormCheckbox from \"./components/FormCheckbox\";\r\nimport FormTable from \"./components/FormTable\";\r\nimport { ReactGAUtils } from \"../shared/utils/ReactGAUtils\";\r\nimport { Submission } from \"../user/models/Submission\";\r\n\r\ninterface States {\r\n form: Form | null;\r\n currentQuestion: number;\r\n lastQuestion?: number;\r\n questionHistory: number[];\r\n values: Record;\r\n summary: boolean;\r\n displaySummaryStep: boolean;\r\n submittedSubmission: string | null;\r\n results: RequirementResult[] | null;\r\n waitValue: boolean;\r\n defaultValue: any;\r\n conditionalInfo: string;\r\n valueList: string[];\r\n subQuestionsValues: object;\r\n currentSubQuestion: string;\r\n defaultValuesTable: {};\r\n}\r\n\r\ninterface Props extends WithTranslation, RouteComponentProps {\r\n submission?: Submission\r\n displayResult?: boolean\r\n connected?: boolean\r\n}\r\n\r\nclass FormPage extends Component {\r\n private formService: FormService;\r\n private translationService: TranslationService;\r\n private decisionTreeService: DecisionTreeService;\r\n private t: TFunction;\r\n\r\n private historyListener: () => void;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.translationService = new TranslationService();\r\n this.decisionTreeService = new DecisionTreeService();\r\n this.t = this.props.t;\r\n this.historyListener = () => {\r\n };\r\n this.state = {\r\n form: null,\r\n currentQuestion: 0,\r\n questionHistory: [],\r\n values: {},\r\n summary: false,\r\n displaySummaryStep: false,\r\n submittedSubmission: null,\r\n results: null,\r\n waitValue: false,\r\n defaultValue: null,\r\n conditionalInfo: '',\r\n valueList: [],\r\n subQuestionsValues: {},\r\n currentSubQuestion: '',\r\n defaultValuesTable: {}\r\n };\r\n }\r\n\r\n get hasPreviousPage() {\r\n return this.state.currentQuestion !== 0;\r\n }\r\n\r\n get hasNextPage() {\r\n return !this.state.summary;\r\n }\r\n\r\n get isLastQuestion() {\r\n return this.state.summary || !this.state.lastQuestion || this.state.currentQuestion === this.state.lastQuestion;\r\n }\r\n\r\n get canSubmitQuestion() {\r\n const question = this.state.form?.questions[this.state.currentQuestion];\r\n\r\n if (!question) {\r\n return false;\r\n }\r\n\r\n if (question.optional) {\r\n return (\r\n (this.getCurrentValue() !== null) &&\r\n !this.state.waitValue &&\r\n !this.state.summary &&\r\n true\r\n );\r\n }\r\n\r\n if (question.type === QuestionType.TEXT_ONLY) {\r\n return true;\r\n }\r\n\r\n if (question.type === QuestionType.TABLE && this.state.values[question.question]?.length === 0) {\r\n return false;\r\n }\r\n\r\n let isValid = true;\r\n let requiredOptionnal = false;\r\n if (question) {\r\n switch (question.type) {\r\n case QuestionType.NUMBER:\r\n if (this.getCurrentValue() === '') {\r\n isValid = false;\r\n break;\r\n }\r\n if (question.validation.min !== undefined && question.validation.min !== null && isValid) {\r\n isValid = this.getCurrentValue() >= question.validation.min;\r\n }\r\n break;\r\n case QuestionType.LONG_TEXT:\r\n requiredOptionnal = true;\r\n break;\r\n case QuestionType.CHECKBOX:\r\n isValid = this.state.valueList.length > 0;\r\n break;\r\n case QuestionType.MULTIPLE:\r\n isValid = this.getSubQuestionValid(question);\r\n requiredOptionnal = true;\r\n break;\r\n case QuestionType.TABLE:\r\n let validRows = 0;\r\n if (this.state.values[question.question]) {\r\n for (const rowValues of this.state.values[question.question]) {\r\n let isRowValid = false;\r\n if(this.state.form?.questions[this.state.currentQuestion].subQuestions) {\r\n // @ts-ignore\r\n for (const subQ of this.state.form?.questions[this.state.currentQuestion].subQuestions) {\r\n if (!subQ.optional && rowValues[subQ.question]) {\r\n isRowValid = true;\r\n }\r\n else if (subQ.optional) {\r\n isRowValid = true;\r\n }\r\n else {\r\n if (subQ.type !== 'previous_question') {\r\n isRowValid = false;\r\n }\r\n }\r\n }\r\n }\r\n if (isRowValid) {\r\n validRows++;\r\n }\r\n }\r\n }\r\n if (this.state.form?.questions[this.state.currentQuestion].size.type === 'fixed') {\r\n isValid = (this.state.values[question.question] && this.state.form?.questions[this.state.currentQuestion].size.value === validRows);\r\n }\r\n if (this.state.form?.questions[this.state.currentQuestion].size.type === 'previous_question') {\r\n const targetQuestion = this._findQuestionByName(this.state.form?.questions[this.state.currentQuestion].size.target);\r\n if (targetQuestion) {\r\n isValid = (this.state.values[question.question] && parseInt(this.state.values[targetQuestion.question]) === validRows);\r\n }\r\n else {\r\n isValid = false;\r\n }\r\n\r\n }\r\n else {\r\n isValid = (this.state.values[question.question] && this.state.values[question.question].length === validRows);\r\n }\r\n }\r\n }\r\n\r\n question.isValid = isValid;\r\n\r\n return (\r\n (this.getCurrentValue() !== null || requiredOptionnal) &&\r\n !this.state.waitValue &&\r\n !this.state.summary &&\r\n isValid\r\n );\r\n }\r\n\r\n private _findQuestionByName(name: string) {\r\n if (this.state.form?.questions) {\r\n for (const qst of this.state.form.questions) {\r\n if (qst.question === name) {\r\n return qst;\r\n }\r\n }\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener(\"keyup\", this.handleKeyUp.bind(this));\r\n\r\n // = Listen to the history to prevent back action\r\n // Clone\r\n this.props.history.push({\r\n pathname: this.props.location.pathname,\r\n search: this.props.location.search,\r\n });\r\n\r\n // 'even' : allows you to execute the \"previous\" action only once when going backwards\r\n let even = 0;\r\n this.historyListener = this.props.history.listen((location, action) => {\r\n // Back action\r\n if (action === \"POP\") {\r\n this.props.history.go(1);\r\n\r\n if (this.state.results) {\r\n this.gotoSummary();\r\n }\r\n else {\r\n even++;\r\n if (even % 2 === 0) {\r\n this.handlePreviousClick(this.state.summary);\r\n even = 0;\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.props.i18n.on(\"languageChanged\", this.generateImage.bind(this));\r\n\r\n this.formService.getForm(\"default\").then((resultQuestions) => {\r\n const form = resultQuestions.data;\r\n for (const question in form.questions) {\r\n if (form.questions[question].images && form.questions[question].images.length > 0) {\r\n form.questions[question].refImages = form.questions[question].images.slice(0);\r\n }\r\n if (form.questions[question].imageValues && form.questions[question].imageValues.length > 0) {\r\n form.questions[question].refImageValues = form.questions[question].imageValues.slice(0);\r\n }\r\n }\r\n this.generateImage(i18n.language, form);\r\n });\r\n }\r\n\r\n async generateImage(code: string, form: Form) {\r\n if (!form) {\r\n form = this.state.form ? this.state.form : {} as Form;\r\n }\r\n for (const question in form.questions) {\r\n for (const i in form.questions[question].refImages) {\r\n const translation = this.formService.t(this.t, form.questions[question].refImages[i], false, false, false, true);\r\n if (translation) {\r\n form.questions[question].images[i] = translation;\r\n }\r\n }\r\n for (const i in form.questions[question].refImageValues) {\r\n const translation = this.formService.t(this.t, form.questions[question].refImageValues[i], false, false, false, true);\r\n if (translation) {\r\n form.questions[question].imageValues[i] = translation;\r\n }\r\n }\r\n }\r\n this.setState({ form: form });\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any): void {\r\n this.formService.getForm(\"default\").then((resultQuestions) => {\r\n const form = resultQuestions.data;\r\n for (const question in form.questions) {\r\n form.questions[question].isValid = true\r\n if (form.questions[question].images && form.questions[question].images.length > 0) {\r\n form.questions[question].refImages = form.questions[question].images.slice(0);\r\n }\r\n if (form.questions[question].imageValues && form.questions[question].imageValues.length > 0) {\r\n form.questions[question].refImageValues = form.questions[question].imageValues.slice(0);\r\n }\r\n }\r\n this.generateImage(i18n.language, form)\r\n .then(() => {\r\n if (nextProps.submission) {\r\n this.setState({\r\n values: nextProps.submission.responses,\r\n subQuestionsValues: this.state.form ? FormUtils.getSubQuestion(this.state.form, nextProps.submission) : this.state.subQuestionsValues,\r\n questionHistory: nextProps.submission.history,\r\n summary: true,\r\n lastQuestion: nextProps.submission.history[nextProps.submission.history.length - 1],\r\n currentQuestion: nextProps.submission.history[nextProps.submission.history.length - 1]\r\n })\r\n }\r\n if (nextProps.displayResult && nextProps.submission?.results) {\r\n this.setState({\r\n results: nextProps.submission.results,\r\n summary: false,\r\n })\r\n }\r\n });\r\n\r\n });\r\n \r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener(\"keyup\", this.handleKeyUp.bind(this));\r\n // Unregister history listener\r\n this.historyListener();\r\n }\r\n\r\n /**\r\n * Handle: reset\r\n *\r\n * Reset the form\r\n */\r\n handleReset() {\r\n this.setState({\r\n questionHistory: [],\r\n currentQuestion: 0,\r\n subQuestionsValues: {},\r\n results: null,\r\n summary: false,\r\n values: {},\r\n displaySummaryStep: false,\r\n waitValue: false,\r\n });\r\n }\r\n\r\n gotoSummary() {\r\n \r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'Affichage',\r\n label: 'Affichage récapitulatif'\r\n });\r\n\r\n this.setState({ summary: true, results: null });\r\n }\r\n\r\n /**\r\n * Handle: keyup event\r\n *\r\n * Submit next question and form\r\n */\r\n handleKeyUp(e: KeyboardEvent) {\r\n if (e.key.toLowerCase() === \"enter\" && this.canSubmitQuestion && !this.state.results) {\r\n this.handleNextClick();\r\n }\r\n }\r\n\r\n /**\r\n * Handle: onValueChange/onChange\r\n */\r\n handleValueChange(value: string | number, currentSubQuestion: any, nextQuestionOnFill: boolean = false) {\r\n const question = this.state.form?.questions[this.state.currentQuestion];\r\n\r\n if (question && value !== null) {\r\n // Add value\r\n const lastValues = this.state.values;\r\n const values = Object.assign({}, lastValues);\r\n values[question.question] = value;\r\n\r\n if (question.type === QuestionType.CHECKBOX) {\r\n if (this.state.valueList.indexOf(value.toString()) === -1) {\r\n this.state.valueList.push(value.toString());\r\n }\r\n else {\r\n const index = this.state.valueList.indexOf(value.toString());\r\n if (index > -1) {\r\n this.state.valueList.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n if (question.type === QuestionType.MULTIPLE) {\r\n this.state.subQuestionsValues[currentSubQuestion.question] = value;\r\n this.setState({\r\n currentSubQuestion: currentSubQuestion.question\r\n });\r\n }\r\n\r\n // Remove next questions in the history\r\n let questionHistory = this.state.questionHistory;\r\n const questionIndex = questionHistory.findIndex(\r\n (id: number) => id === this.state.currentQuestion\r\n );\r\n if (questionIndex !== -1) {\r\n questionHistory.splice(\r\n questionIndex + 1,\r\n questionHistory.length - (questionIndex + 1)\r\n );\r\n questionHistory = questionHistory.slice(0);\r\n }\r\n\r\n if (question.type === QuestionType.CHECKBOX) {\r\n values[question.question] = this.state.valueList;\r\n }\r\n else if (question.type === QuestionType.MULTIPLE) {\r\n if (question.subQuestions) {\r\n values[question.question] = {};\r\n for (const qst of question.subQuestions) {\r\n values[qst.question] = this.state.subQuestionsValues[qst.question];\r\n values[question.question][qst.question] = this.state.subQuestionsValues[qst.question];\r\n }\r\n\r\n }\r\n }\r\n\r\n this.setState({\r\n values,\r\n questionHistory,\r\n summary: false,\r\n displaySummaryStep: false,\r\n });\r\n\r\n if (nextQuestionOnFill) {\r\n setTimeout(() => {\r\n if (question !== this.state.form?.questions[this.state.currentQuestion]) {\r\n return;\r\n }\r\n if (this.canSubmitQuestion) {\r\n this.handleNextClick();\r\n }\r\n }, 0);\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Handle: onClick for the next/summary button\r\n */\r\n async handleNextClick(goToLast?: boolean) {\r\n if (!this.state.form || this.state.summary) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n waitValue: true,\r\n valueList: []\r\n });\r\n\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'click',\r\n label: 'Question suivante'\r\n });\r\n\r\n // = Check conditions\r\n const nextQuestion = await this.getNextQuestion(\r\n this.state.currentQuestion,\r\n this.state.form.questions,\r\n goToLast ?? false\r\n );\r\n\r\n // = Access to summary\r\n if (nextQuestion.goToSummary) {\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'Affichage',\r\n label: 'Affichage récapitulatif'\r\n });\r\n\r\n this.setState({\r\n questionHistory: nextQuestion.questionHistory,\r\n summary: true,\r\n waitValue: false,\r\n });\r\n return;\r\n }\r\n const currentQuestion = goToLast ? nextQuestion.lastQuestion : nextQuestion.nextQuestion;\r\n /*if(goToLast) {\r\n //add last question in values and in questionHistory\r\n let v = this.state.values;\r\n let qH;\r\n const q = this.state.form.questions[nextQuestion.lastQuestion]\r\n v[q.question] = '';\r\n if(!this.state.questionHistory.includes(nextQuestion.lastQuestion)) {\r\n qH = this.state.questionHistory;\r\n qH.push(nextQuestion.lastQuestion)\r\n }\r\n this.setState({\r\n values: v,\r\n questionHistory: qH ?? nextQuestion.questionHistory,\r\n summary: true,\r\n waitValue: false,\r\n });\r\n return;\r\n }*/\r\n\r\n this.setState({\r\n valueList: (this.state.values[this.state.form.questions[currentQuestion].question]) ? this.state.values[this.state.form.questions[currentQuestion].question] : []\r\n });\r\n\r\n Promise.all([\r\n this.computeDefaultValue(currentQuestion, nextQuestion.questionHistory),\r\n this.computeConditionalInfo(currentQuestion, nextQuestion.questionHistory),\r\n ])\r\n .then((data: any) => {\r\n window.scroll(0, 0);\r\n this.setState({\r\n currentQuestion,\r\n lastQuestion: nextQuestion.lastQuestion,\r\n questionHistory: nextQuestion.questionHistory,\r\n waitValue: false,\r\n defaultValue: data[0],\r\n conditionalInfo: data[1]\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Handle: onClick for the previous button\r\n */\r\n async handlePreviousClick(fromSummary: boolean = false) {\r\n if (!this.state.form || this.state.currentQuestion === 0) {\r\n return;\r\n }\r\n\r\n const questionHistory = this.state.questionHistory;\r\n const questionIndex = questionHistory.findIndex(\r\n (id: number) => id === this.state.currentQuestion\r\n );\r\n let previousQuestion = questionHistory[questionHistory.length - 1];\r\n if (questionIndex !== -1 && !this.state.summary) {\r\n previousQuestion = questionHistory[questionIndex - 1];\r\n }\r\n\r\n this.setState({\r\n valueList: (this.state.values[this.state.form.questions[previousQuestion].question]) ? this.state.values[this.state.form.questions[previousQuestion].question] : []\r\n });\r\n\r\n Promise.all([\r\n this.computeDefaultValue(previousQuestion),\r\n this.computeConditionalInfo(previousQuestion),\r\n ])\r\n .then((data: any) => {\r\n this.setState({\r\n currentQuestion: previousQuestion,\r\n displaySummaryStep: fromSummary,\r\n summary: false,\r\n defaultValue: data[0],\r\n conditionalInfo: data[1]\r\n });\r\n });\r\n }\r\n\r\n private getQuestionHistoryByQuestion(questionId) {\r\n const questionHistory: number[] = [];\r\n for (const questionHistoryId of this.state.questionHistory) {\r\n if (questionHistoryId < questionId) {\r\n questionHistory.push(questionHistoryId);\r\n }\r\n }\r\n return questionHistory;\r\n }\r\n\r\n async computeDefaultValue(questionIndex: number, questionHistory?: number[]) {\r\n const question = this.state.form?.questions[questionIndex];\r\n if (question) {\r\n if (\r\n question.default_value &&\r\n question.default_value.decision_tree\r\n ) {\r\n const history = questionHistory ? questionHistory : this.getQuestionHistoryByQuestion(questionIndex);\r\n return await this.decisionTreeService.computeDecisionTree(\r\n question.default_value.decision_tree,\r\n FormUtils.getValidValues(this.state.form ? this.state.form.questions : [], this.state.values, history, questionIndex)\r\n );\r\n }\r\n else if (question.type === QuestionType.TABLE) {\r\n if (question.subQuestions) {\r\n const datas = {};\r\n for (const qst of question.subQuestions) {\r\n if (qst.type === QuestionType.DECISION_TREE) {\r\n const history = questionHistory ? questionHistory : this.getQuestionHistoryByQuestion(questionIndex);\r\n datas[qst.question] = await this.decisionTreeService.computeDecisionTree(\r\n qst.target,\r\n FormUtils.getValidValues(this.state.form ? this.state.form.questions : [], this.state.values, history, questionIndex)\r\n );\r\n }\r\n }\r\n // Add data to values\r\n if (!this.state.values[question.question]) {\r\n this.state.values[question.question] = [];\r\n }\r\n for (const key of Object.keys(datas)) {\r\n for (const i in datas[key]) {\r\n if (!this.state.values[question.question][i]) {\r\n this.state.values[question.question].push({ [key]: datas[key][i] });\r\n }\r\n else {\r\n /*if(!this.state.values[question.question][i][key]) {\r\n this.state.values[question.question][i][key] = datas[key][i];\r\n }*/\r\n this.state.values[question.question][i][key] = datas[key][i];\r\n }\r\n }\r\n }\r\n\r\n return datas;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n async computeConditionalInfo(questionIndex: number, questionHistory?: number[]) {\r\n const question = this.state.form?.questions[questionIndex];\r\n if (question) {\r\n let result = '';\r\n // If empty conditionalInfo return empty string\r\n if (!question.conditionalInfo || (Array.isArray(question.conditionalInfo) && question.conditionalInfo.length === 0)) {\r\n return result;\r\n }\r\n\r\n const history = questionHistory ? questionHistory : this.getQuestionHistoryByQuestion(questionIndex);\r\n const cache = new Map();\r\n const values = FormUtils.getValidValues(this.state.form ? this.state.form.questions : [], this.state.values, history, questionIndex);\r\n\r\n for (const conditionalInfo of question.conditionalInfo) {\r\n if (await FormUtils.checkCondition(\r\n this.decisionTreeService,\r\n conditionalInfo.conditions.lhs,\r\n conditionalInfo.conditions.operator,\r\n conditionalInfo.conditions.rhs,\r\n (question.type === QuestionType.CHECKBOX) ? question.values : values,\r\n cache\r\n )) {\r\n if (result !== '') {\r\n result += '
    ';\r\n }\r\n result += this.formService.t(this.t, conditionalInfo.info, true, false, true);\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getSubQuestionValid(question: FormQuestion): boolean {\r\n if (question.subQuestions) {\r\n for (const subQ of question.subQuestions) {\r\n if (subQ.question === this.state.currentSubQuestion) {\r\n subQ.isValid = true;\r\n }\r\n }\r\n for (const qst of question.subQuestions) {\r\n if (!qst.optional && !qst.isValid) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Handle: onSubmitForm\r\n *\r\n * Reset the form\r\n */\r\n handleSubmitForm(results: RequirementResults, id: string) {\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'Affichage',\r\n label: 'Affichage résultat'\r\n });\r\n\r\n this.setState({\r\n summary: false,\r\n submittedSubmission: id,\r\n results: results.results\r\n });\r\n }\r\n\r\n /**\r\n * Handle: onStepClick (FormStepper) & onQuestionClick (FormSummary)\r\n *\r\n * Navigate to the desired question\r\n */\r\n handleQuestionClick(questionId: number, fromSummary: boolean = false) {\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'click',\r\n label: 'stepper'\r\n });\r\n // if summary\r\n if (questionId === -1) {\r\n this.gotoSummary();\r\n return;\r\n }\r\n\r\n if (this.state.form) {\r\n this.setState({\r\n valueList: (this.state.values[this.state.form.questions[questionId].question]) ? this.state.values[this.state.form.questions[questionId].question] : []\r\n });\r\n }\r\n\r\n Promise.all([\r\n this.computeDefaultValue(questionId),\r\n this.computeConditionalInfo(questionId),\r\n ])\r\n .then((data: any) => {\r\n this.setState({\r\n currentQuestion: questionId,\r\n displaySummaryStep: this.state.displaySummaryStep || fromSummary,\r\n summary: false,\r\n defaultValue: data[0],\r\n conditionalInfo: data[1]\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Get value for a question\r\n */\r\n getValue(type: QuestionType, question: string) {\r\n const answers = this.state.values;\r\n if (!answers || answers[question] === undefined) {\r\n switch (type) {\r\n case QuestionType.NUMBER:\r\n return 0;\r\n default:\r\n return null;\r\n }\r\n }\r\n return answers[question];\r\n }\r\n\r\n /**\r\n * Get value for the current question\r\n */\r\n getCurrentValue() {\r\n const question = this.state.form?.questions[this.state.currentQuestion];\r\n if (!question) {\r\n return null;\r\n }\r\n const currentValue = this.getValue(question.type, question.question);\r\n\r\n if (question.type === QuestionType.NUMBER && currentValue === 0) {\r\n return null;\r\n }\r\n\r\n return currentValue;\r\n }\r\n\r\n /**\r\n * Create question elements\r\n */\r\n createElementQuestion(\r\n question: FormQuestion,\r\n value: any,\r\n handleValueChange: (v: any, p?: FormQuestion | null, f?: boolean) => void,\r\n isSubQuestion?: boolean\r\n ): ReactNode {\r\n switch (question.type) {\r\n case QuestionType.STRING:\r\n return (\r\n {\r\n handleValueChange(v.target.value, question, (!isSubQuestion));\r\n } }\r\n value={ (isSubQuestion) ? (this.state.values[question.question] ? this.state.subQuestionsValues[question.question] : '') : value }\r\n >\r\n\r\n \r\n );\r\n case QuestionType.RADIO_IMAGE:\r\n return (\r\n handleValueChange(v, question, (!isSubQuestion)) }\r\n />\r\n );\r\n case QuestionType.RADIO:\r\n return (\r\n handleValueChange(v, question, (!isSubQuestion)) }\r\n />\r\n );\r\n case QuestionType.DROPDOWN:\r\n return (\r\n handleValueChange(v, question, (!isSubQuestion)) }\r\n isSubQuestion={ isSubQuestion }\r\n />\r\n );\r\n case QuestionType.MATRIX:\r\n return (\r\n handleValueChange(v, question, (!isSubQuestion)) }\r\n />\r\n );\r\n case QuestionType.BOOL:\r\n return (\r\n handleValueChange(v, question, (!isSubQuestion)) }\r\n />\r\n );\r\n case QuestionType.NUMBER:\r\n return (\r\n handleValueChange(v, question) }\r\n onBlur={ (question, v) => {\r\n if (question !== this.state.form?.questions[this.state.currentQuestion].question) {\r\n return;\r\n }\r\n return handleValueChange(v);\r\n } }\r\n />\r\n );\r\n case QuestionType.LONG_TEXT:\r\n return (\r\n handleValueChange(v, question) }\r\n />\r\n );\r\n case QuestionType.CHECKBOX:\r\n return (\r\n handleValueChange(v, question) }\r\n />\r\n );\r\n case QuestionType.MULTIPLE:\r\n if (question.subQuestions) {\r\n let questions: ReactNode[] = [];\r\n for (const qst of question.subQuestions) {\r\n const style = { fontWeight: 'bold', marginBottom: '10px' };\r\n questions.push(React.createElement('p', { className: 'questionTitle', style }, this.formService.t(this.t, qst.shortTitle, true, false)));\r\n\r\n questions.push(this.createElementQuestion(\r\n qst,\r\n this.getValue(qst.type, qst.question),\r\n this.handleValueChange.bind(this),\r\n true\r\n ));\r\n questions.push(React.createElement('br'));\r\n questions.push(React.createElement('br'));\r\n }\r\n return questions;\r\n }\r\n break;\r\n case QuestionType.TABLE:\r\n if (typeof this.state.values[question.size.target] === 'object') {\r\n if (this.state.values[question.question] &&\r\n (this.state.values[question.question].length >\r\n this.state.values[question.size.target].length)) {\r\n\r\n while (this.state.values[question.question].length >\r\n this.state.values[question.size.target].length) {\r\n this.state.values[question.question].pop();\r\n }\r\n }\r\n }\r\n else {\r\n if (this.state.values[question.question] &&\r\n (this.state.values[question.question].length >\r\n this.state.values[question.size.target])) {\r\n\r\n while (this.state.values[question.question].length >\r\n this.state.values[question.size.target]) {\r\n this.state.values[question.question].pop();\r\n }\r\n }\r\n }\r\n return {\r\n handleValueChange(v, question);\r\n } }\r\n questionHistory={ this.state.values }\r\n questions={ this.state.form?.questions }\r\n onSizeChange={ () => handleValueChange(value, question) }\r\n />;\r\n }\r\n }\r\n\r\n /**\r\n * Check the conditions and return the next question\r\n */\r\n async getNextQuestion(\r\n index: number,\r\n questions: FormQuestion[],\r\n goToLast: boolean\r\n ): Promise<{ nextQuestion: number, lastQuestion: number, questionHistory: number[], goToSummary?: boolean }> {\r\n if (!this.state.form) {\r\n return {\r\n nextQuestion: this.state.currentQuestion,\r\n lastQuestion: this.state.currentQuestion,\r\n questionHistory: this.state.questionHistory\r\n };\r\n }\r\n\r\n const cache = new Map();\r\n\r\n let nextQuestion;\r\n let lastQuestion;\r\n let questionHistory = this.state.questionHistory.slice(0);\r\n if (!questionHistory.includes(this.state.currentQuestion)) {\r\n questionHistory.push(this.state.currentQuestion);\r\n }\r\n for (let i = index + 1; i < questions.length; i++) {\r\n let values = FormUtils.getValidValues(this.state.form.questions, this.state.values, questionHistory, i);\r\n const question = questions[i];\r\n if (!question.conditions || await FormUtils.checkCondition(\r\n this.decisionTreeService,\r\n question.conditions.lhs,\r\n question.conditions.operator,\r\n question.conditions.rhs,\r\n values,\r\n cache\r\n )) {\r\n if (!nextQuestion) {\r\n nextQuestion = i;\r\n }\r\n lastQuestion = i;\r\n\r\n if (goToLast && questions.length - 1 === lastQuestion) {\r\n return {\r\n nextQuestion: questions.length - 1,\r\n lastQuestion: questions.length - 1,\r\n questionHistory,\r\n goToSummary: true\r\n };\r\n }\r\n\r\n if ((question.isValid && this.state.values[question.question] !== undefined)) {\r\n if (!questionHistory.includes(i)) {\r\n questionHistory.push(i);\r\n }\r\n continue;\r\n }\r\n\r\n if ((question.optional || question.type === QuestionType.TEXT_ONLY) && questionHistory.includes(i)) {\r\n continue;\r\n }\r\n\r\n return { nextQuestion, lastQuestion, questionHistory };\r\n }\r\n }\r\n return lastQuestion ? { nextQuestion, lastQuestion, questionHistory } : {\r\n nextQuestion: questions.length - 1,\r\n lastQuestion: questions.length - 1,\r\n questionHistory,\r\n goToSummary: true\r\n };\r\n }\r\n\r\n render() {\r\n\r\n if (!this.state.form) {\r\n return
    Loading...
    ;\r\n }\r\n\r\n //\r\n // = SUMMARY\r\n //\r\n\r\n if (this.state.summary) {\r\n return (\r\n \r\n this.handleSubmitForm(results, id)\r\n }\r\n onPreviousClick={ () => this.handlePreviousClick(true) }\r\n onQuestionClick={ (questionId: number) =>\r\n this.handleQuestionClick(questionId, true)\r\n }\r\n />\r\n );\r\n }\r\n\r\n //\r\n // = RESULTS\r\n //\r\n if (this.state.results) {\r\n return (\r\n this.handleReset() }\r\n onPreviousClick={ () => this.gotoSummary() }\r\n />\r\n );\r\n }\r\n\r\n //\r\n // = FORM\r\n //\r\n const question = (this.state.form.questions) ? this.state.form.questions[this.state.currentQuestion] : null;\r\n if (!question) {\r\n return (\r\n
    \r\n

    Loading...

    \r\n
    \r\n );\r\n }\r\n const el: ReactNode = this.createElementQuestion(\r\n question,\r\n this.getValue(question.type, question.question),\r\n this.handleValueChange.bind(this)\r\n );\r\n\r\n // Image\r\n let imageNodes: ReactNode[] = [];\r\n\r\n if (question.images.length) {\r\n for (let i = 0; i < question.images.length; i++) {\r\n const image = question.images[i];\r\n imageNodes.push(\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n this.handleQuestionClick(questionId)\r\n }\r\n />\r\n \r\n { this.formService.t(this.t, question.question, true) }\r\n \r\n { question.info && (\r\n { this.formService.t(this.t, question.info, true) }\r\n ) }\r\n { this.state.conditionalInfo && this.state.conditionalInfo !== '' && (\r\n \r\n ) }\r\n
    \r\n { question.type === QuestionType.TEXT_ONLY ? null : (\r\n \r\n
    \r\n { question.default_value && this.state.defaultValue && (\r\n
    \r\n {/*{ (this.formService.checkIfValue(RichText.render(this.t(\"ui_input_suggestion\", { returnObjects: true })), \"ui_input_suggestion\")) ? (RichText.render(this.t(\"ui_input_suggestion\", { returnObjects: true }))) : \"no_value\" }*/}\r\n { (this.formService.checkIfValue(this.formService.t(this.t, \"ui_input_suggestion\", false), \"ui_input_suggestion\")) ? this.formService.t(this.t, \"ui_input_suggestion\", false) : \"no_value\" }\r\n { this.state.defaultValue }\r\n { question.unit && (\r\n // { RichText.render(this.t(question.unit, { returnObjects: true })) }\r\n { this.formService.t(this.t, question.unit, false) }\r\n ) }\r\n
    \r\n ) }\r\n { el }\r\n
    \r\n
    \r\n ) }\r\n { imageNodes.length ? (\r\n
    \r\n
    { imageNodes }
    \r\n
    \r\n ) : null }\r\n \r\n { question.subInfo && (\r\n { this.formService.t(this.t, question.subInfo, true) }\r\n ) }\r\n
    \r\n
    \r\n
    \r\n
    \r\n { this.hasPreviousPage && !this.state.waitValue ? (\r\n {\r\n this.handlePreviousClick();\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'click',\r\n label: 'Question précédente'\r\n });\r\n } }\r\n >\r\n \r\n \r\n { this.formService.t(this.t, \"button_previous\", false, true) }\r\n \r\n \r\n ) : undefined }\r\n
    \r\n
    \r\n { !this.isLastQuestion && this.state.questionHistory.length !== 0 ? (\r\n {\r\n this.handleNextClick(true);\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'click',\r\n label: 'Bouton avance rapide'\r\n });\r\n } }\r\n >\r\n { this.state.waitValue ? (\r\n \"Loading...\"\r\n ) : (\r\n \r\n { this.formService.t(this.t, \"button_go_to_last\", false, true) } \r\n \r\n \r\n ) }\r\n \r\n ) : undefined }\r\n { this.hasNextPage ? (\r\n {\r\n this.handleNextClick();\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'click',\r\n label: 'Question suivante'\r\n });\r\n } }\r\n disabled={ (question.optional) ? false : !this.canSubmitQuestion }\r\n >\r\n { this.state.waitValue ? (\r\n \"Loading...\"\r\n ) : (\r\n \r\n { this.formService.t(this.t, \"button_next\", false, true) }\r\n \r\n \r\n ) }\r\n \r\n ) : undefined }\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(withRouter(FormPage));\r\n","import React, { Component } from 'react';\r\nimport { withTranslation, WithTranslation } from 'react-i18next';\r\nimport { TFunction } from 'i18next';\r\nimport { FormService } from '../../form/services/FormService';\r\n\r\n\r\ninterface Props extends WithTranslation {\r\n\r\n}\r\n\r\nclass Logo extends Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n \"BBRI\r\n \r\n \r\n \"BBRI\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(Logo);\r\n","import React, { Component } from \"react\";\r\nimport { TFunction } from 'i18next';\r\nimport { FormService } from '../../form/services/FormService';\r\nimport { withTranslation, WithTranslation } from 'react-i18next';\r\n\r\ninterface Props extends WithTranslation {\r\n\r\n}\r\n\r\nclass ToolLogo extends Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.t = this.props.t;\r\n }\r\n\r\n render() {\r\n return \"Tool;\r\n }\r\n}\r\n\r\nexport default withTranslation()(ToolLogo);\r\n","import { Select } from \"@bbri/ui\";\r\nimport React, { Component } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport \"./SelectLanguage.scss\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\nclass SelectLanguage extends Component {\r\n static languages = [\"fr\", \"nl\"];\r\n\r\n handleSelectChange(value: string) {\r\n this.props.i18n.changeLanguage(value);\r\n }\r\n\r\n render() {\r\n const options: { id: string; name: string }[] = [];\r\n\r\n for (const language of SelectLanguage.languages) {\r\n options.push({\r\n id: language,\r\n name: language.toUpperCase(),\r\n });\r\n }\r\n\r\n return (\r\n
    \r\n \r\n this.handleSelectChange(item.id)\r\n }\r\n />\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(SelectLanguage);\r\n","import React, { Component } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { Button } from \"@bbri/ui\";\r\nimport { TFunction } from 'i18next';\r\nimport \"./About.scss\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport ReactGA from \"react-ga\";\r\nimport { ReactGAUtils } from \"../utils/ReactGAUtils\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\nclass About extends Component {\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.formService = new FormService();\r\n }\r\n\r\n openAbout() {\r\n window.open(this.formService.t(this.t, 'url_about', false));\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'click',\r\n label: 'À propos'\r\n });\r\n this.openAbout();\r\n }}\r\n >\r\n \r\n \r\n {this.formService.t(this.t, \"button_about\", false, true)}\r\n \r\n \r\n ?\r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(About);\r\n","import React, { Component } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { Button } from \"@bbri/ui\";\r\nimport { TFunction } from 'i18next';\r\nimport \"./About.scss\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport ReactGA from \"react-ga\";\r\nimport { ReactGAUtils } from \"../utils/ReactGAUtils\";\r\nimport {Dialog} from \"primereact/dialog\";\r\nimport {AuthService} from \"../../login/services/AuthService\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n showDialog: boolean\r\n}\r\n\r\nclass LogoutIcon extends Component {\r\n\r\n private t: TFunction;\r\n private formService: FormService;\r\n private authService : AuthService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.formService = new FormService();\r\n this.authService = new AuthService();\r\n this.state = {\r\n showDialog: false\r\n }\r\n }\r\n\r\n handleClick() {\r\n this.setState({\r\n showDialog: true\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n this.handleClick()}>\r\n this.setState({ showDialog: false})}>\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(LogoutIcon);\r\n","import React, { Component } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { Button } from \"@bbri/ui\";\r\nimport { TFunction } from 'i18next';\r\nimport \"./About.scss\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport ReactGA from \"react-ga\";\r\nimport { ReactGAUtils } from \"../utils/ReactGAUtils\";\r\nimport {Dialog} from \"primereact/dialog\";\r\nimport {AuthService} from \"../../login/services/AuthService\";\r\n\r\ninterface Props extends WithTranslation {\r\n header: string,\r\n path: string,\r\n logo: string\r\n}\r\n\r\ninterface States {\r\n showDialog: boolean\r\n}\r\n\r\nclass LogoutIcon extends Component {\r\n\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.formService = new FormService();\r\n this.state = {\r\n showDialog: false\r\n }\r\n }\r\n\r\n handleClick() {\r\n this.setState({\r\n showDialog: true\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n this.handleClick()}>\r\n this.setState({ showDialog: false})}>\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(LogoutIcon);","import React, { Component } from \"react\";\r\nimport Logo from \"../shared/components/Logo\";\r\nimport ToolLogo from \"../shared/components/ToolLogo\";\r\nimport SelectLanguage from \"../shared/components/SelectLanguage\";\r\nimport \"./MainLayout.scss\";\r\nimport About from '../shared/components/About';\r\nimport { Button } from \"@bbri/ui\";\r\nimport {AuthService} from \"../login/services/AuthService\";\r\nimport LogoutIcon from \"../shared/components/LogoutIcon\";\r\nimport NavigateButton from \"../shared/components/NavigateButton\";\r\n\r\ninterface Props {\r\n}\r\n\r\nclass MainLayout extends Component {\r\n render() {\r\n return (\r\n \r\n
    \r\n \r\n \r\n
    \r\n {(AuthService.isAuth && AuthService.user?.email !== \"anonymous@bbri.be\") ? (\r\n \r\n ) : }\r\n \r\n \r\n
    \r\n
    \r\n
    {this.props.children}
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default MainLayout;\r\n","import React from 'react';\r\nimport { Redirect, Route } from 'react-router-dom';\r\nimport { AuthService } from '../services/AuthService';\r\nimport { RoleEnum } from '../../shared/enum/RoleEnum';\r\n\r\ninterface Props {\r\n path: string;\r\n}\r\n\r\nexport default class AdminRoute extends React.Component {\r\n\r\n render() {\r\n const isAuth = AuthService.isAuth;\r\n let role: RoleEnum | undefined;\r\n\r\n if (isAuth) {\r\n role = AuthService.user?.role;\r\n }\r\n\r\n return (\r\n isAuth && role === RoleEnum.ADMIN\r\n ? this.props.children\r\n : }/>\r\n );\r\n }\r\n}","import React from 'react';\r\nimport { Redirect, Route } from 'react-router-dom';\r\nimport { AuthService } from '../services/AuthService';\r\n\r\ninterface Props {\r\n path: string;\r\n}\r\n\r\nexport default class PrivateRoute extends React.Component {\r\n\r\n render() {\r\n return (\r\n AuthService.isAuth\r\n ? this.props.children\r\n : }/>\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { Redirect, Route } from 'react-router-dom';\r\nimport { AuthService } from '../services/AuthService';\r\n\r\ninterface Props {\r\n path: string;\r\n}\r\n\r\nexport default class UserRoute extends React.Component {\r\n\r\n render() {\r\n return (\r\n (AuthService.isAuth && AuthService.user?.email !== \"anonymous@bbri.be\")\r\n ? this.props.children\r\n : }/>\r\n );\r\n }\r\n}\r\n","export class LoginDTO {\r\n\r\n constructor(\r\n readonly email: string,\r\n readonly password: string\r\n ) {\r\n }\r\n}","import { Button } from \"@bbri/ui\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport { RoleEnum } from \"../../shared/enum/RoleEnum\";\r\nimport { AuthService } from \"../services/AuthService\";\r\nimport { LoginDTO } from \"../dto/LoginDTO\";\r\nimport { AuthUser } from \"../models/AuthUser\";\r\nimport { FormService } from '../../form/services/FormService';\r\n\r\ninterface Props extends WithTranslation {\r\n email: string;\r\n password: string;\r\n onLogin: (isAuth: boolean) => void;\r\n}\r\n\r\nfunction ButtonLogin(props: Props) {\r\n const history = useHistory();\r\n const location = useLocation();\r\n const authService = new AuthService();\r\n const formService = new FormService();\r\n\r\n const handleClick = () => {\r\n const dto = new LoginDTO(props.email?.trim().toLowerCase(), props.password);\r\n\r\n authService.login(dto).then((user: AuthUser | null) => {\r\n if (!user) {\r\n props.onLogin(false);\r\n return;\r\n }\r\n\r\n props.onLogin(true);\r\n\r\n let from = { pathname: \"/\" };\r\n\r\n if (location.state) {\r\n from = (location.state as any).from;\r\n }\r\n\r\n // = Admin ?\r\n if (user.role === RoleEnum.ADMIN) {\r\n from = { pathname: \"/admin\" };\r\n }\r\n\r\n if (user.role === RoleEnum.USER) {\r\n from = { pathname: \"/user\" }\r\n }\r\n\r\n history.replace(from);\r\n });\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default withTranslation()(ButtonLogin);\r\n","import { Input } from \"@bbri/ui\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Messages } from \"primereact/messages\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport Logo from \"../shared/components/Logo\";\r\nimport SelectLanguage from \"../shared/components/SelectLanguage\";\r\nimport ToolLogo from \"../shared/components/ToolLogo\";\r\nimport { SeverityEnum } from \"../shared/enum/SeverityEnum\";\r\nimport ButtonLogin from \"./components/ButtonLogin\";\r\nimport \"./LoginPage.scss\";\r\nimport { FormService } from \"../form/services/FormService\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n email: string;\r\n password: string;\r\n}\r\n\r\nclass LoginPage extends React.Component {\r\n state: Readonly = {\r\n email: \"\",\r\n password: \"\",\r\n };\r\n private messages: Messages | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.messages = null;\r\n this.t = this.props.t;\r\n this.formService = new FormService();\r\n\r\n }\r\n\r\n handleLogin(isAuth: boolean) {\r\n if (!isAuth && this.messages) {\r\n this.messages.replace({\r\n severity: SeverityEnum.ERROR,\r\n closable: false,\r\n sticky: true,\r\n detail: this.formService.t(this.t, \"error_invalid_credentials\", false),\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n (this.messages = el)}/>\r\n \r\n
    \r\n \r\n this.setState({ email: (e.target as any).value })\r\n }\r\n />\r\n
    \r\n
    \r\n \r\n this.setState({ password: (e.target as any).value })\r\n }\r\n />\r\n
    \r\n \r\n this.handleLogin(e)}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(LoginPage);\r\n","import { Button } from \"@bbri/ui\";\r\nimport React, { useState } from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport { AuthService } from \"../services/AuthService\";\r\nimport { LoginDTO } from \"../dto/LoginDTO\";\r\nimport { AuthUser } from \"../models/AuthUser\";\r\nimport { FormService } from '../../form/services/FormService';\r\nimport ReactGA from \"react-ga\";\r\nimport { ReactGAUtils } from \"../../shared/utils/ReactGAUtils\";\r\nimport { Send } from \"react-feather\";\r\n\r\ninterface Props extends WithTranslation {\r\n onLogin: (isAuth: boolean) => void;\r\n}\r\n\r\nfunction ButtonAnonymous(props: Props) {\r\n const history = useHistory();\r\n const location = useLocation();\r\n const authService = new AuthService();\r\n const formService = new FormService();\r\n\r\n const [clicked, setClicked] = useState(false);\r\n\r\n const handleClick = () => {\r\n const dto = new LoginDTO('anonymous@bbri.be', '');\r\n\r\n setClicked(true);\r\n\r\n authService.login(dto).then((user: AuthUser | null) => {\r\n if (!user) {\r\n props.onLogin(false);\r\n return;\r\n }\r\n\r\n ReactGA.event({\r\n category: ReactGAUtils.getCategory(),\r\n action: 'click',\r\n label: 'Démarrage'\r\n });\r\n\r\n props.onLogin(true);\r\n\r\n let from = { pathname: \"/\" };\r\n\r\n if (location.state) {\r\n from = (location.state as any).from;\r\n }\r\n\r\n history.replace(from);\r\n });\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default withTranslation()(ButtonAnonymous);\r\n","import {Button} from \"@bbri/ui\";\r\nimport React from \"react\";\r\nimport {withTranslation, WithTranslation} from \"react-i18next\";\r\nimport {useHistory, useLocation} from \"react-router-dom\";\r\nimport {RoleEnum} from \"../../shared/enum/RoleEnum\";\r\nimport {AuthService} from \"../services/AuthService\";\r\nimport {AuthUser} from \"../models/AuthUser\";\r\nimport {FormService} from '../../form/services/FormService';\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\nfunction ButtonLogin(props: Props) {\r\n const history = useHistory();\r\n const location = useLocation();\r\n const authService = new AuthService();\r\n const formService = new FormService();\r\n\r\n const handleClick = () => {\r\n\r\n authService.loginSSO()\r\n .then((user : AuthUser | undefined) => {\r\n if (user) {\r\n let from\r\n if (user.role === RoleEnum.ADMIN) {\r\n from = { pathname: \"/admin\" };\r\n }\r\n\r\n if (user.role === RoleEnum.USER) {\r\n from = { pathname: \"/user\" }\r\n }\r\n\r\n history.replace(from);\r\n }\r\n })\r\n .catch((e) => {\r\n\r\n })\r\n \r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default withTranslation()(ButtonLogin);\r\n","import { TFunction } from \"i18next\";\r\nimport { Messages } from \"primereact/messages\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport Logo from \"../shared/components/Logo\";\r\nimport SelectLanguage from \"../shared/components/SelectLanguage\";\r\nimport ToolLogo from \"../shared/components/ToolLogo\";\r\nimport { SeverityEnum } from \"../shared/enum/SeverityEnum\";\r\nimport \"./AnonymousPage.scss\";\r\nimport { FormService } from \"../form/services/FormService\";\r\nimport ButtonAnonymous from \"./components/ButtonAnonymous\";\r\nimport { RichText } from \"prismic-reactjs\";\r\nimport { Button } from \"@bbri/ui\";\r\nimport ButtonLoginSSO from \"./components/ButtonLoginSSO\";\r\n\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n email: string;\r\n password: string;\r\n}\r\n\r\nclass AnonymousPage extends React.Component {\r\n state: Readonly = {\r\n email: \"\",\r\n password: \"\",\r\n };\r\n private messages: Messages | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.messages = null;\r\n this.t = this.props.t;\r\n this.formService = new FormService();\r\n const formService = new FormService();\r\n\r\n }\r\n\r\n handleLogin(isAuth: boolean) {\r\n if (!isAuth && this.messages) {\r\n this.messages.replace({\r\n severity: SeverityEnum.ERROR,\r\n closable: false,\r\n sticky: true,\r\n detail: this.formService.t(this.t, \"error_invalid_credentials\", false, true),\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n (this.messages = el)}/>\r\n
    \r\n

    {this.formService.checkIfValue(RichText.render(this.t(\"sub_title_app\", { returnObjects: true })), \"sub_title_app\")}

    \r\n

    \r\n {this.formService.t(this.t, \"introductive_text\", true)}\r\n

    \r\n
    \r\n this.handleLogin(e)}\r\n />\r\n {/**/}\r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \"partners\"/\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(AnonymousPage);\r\n","import jquery from \"jquery\";\r\n\r\nwindow.$ = window.jQuery = jquery;\r\n","import draw2d from \"draw2d\";\r\nconst draw2d2 = draw2d as any;\r\nconst TRANSITION_COLOR = 'black';\r\n\r\nexport class Transition extends draw2d2.Connection {\r\n NAME = 'Transition';\r\n\r\n label: any = null;\r\n\r\n constructor(sourceFigure?: any, targetFigure?: any) {\r\n super({\r\n router: new draw2d2.layout.connection.VertexRouter(),\r\n name: 'Transition',\r\n selectable: !sourceFigure,\r\n userData: {\r\n name: 'Transition'\r\n }\r\n });\r\n if(sourceFigure && targetFigure) {\r\n for (const port of sourceFigure.hybridPorts.data) {\r\n if(port.name === 'down') {\r\n this.setSource(port)\r\n }\r\n }\r\n for (const port of targetFigure.hybridPorts.data) {\r\n if(port.name === 'up') {\r\n this.setTarget(port)\r\n }\r\n }\r\n }\r\n\r\n // add arrow decorator\r\n let arrow = new draw2d2.decoration.connection.ArrowDecorator();\r\n arrow.setDimension(15, 10);\r\n arrow.setBackgroundColor('black');\r\n this.setTargetDecorator(arrow);\r\n this.setColor('black');\r\n\r\n this._displayInfo();\r\n }\r\n\r\n private _displayInfo() {\r\n\r\n // remove old table\r\n if (this.tableInfo) {\r\n this.remove(this.tableInfo);\r\n }\r\n\r\n this.tableInfo = new draw2d.shape.layout.TableLayout({\r\n stroke: 0,\r\n resizeable: true,\r\n bgColor: '#FFFFFF',\r\n });\r\n\r\n let header: any[] = [];\r\n\r\n header.push(this.label ?? this.NAME);\r\n\r\n this.tableInfo.addRow(...header);\r\n this.tableInfo.setPadding(0);\r\n\r\n //this.add(this.tableInfo, new decision-tree.layout.locator.PolylineMidpointLocator());\r\n }\r\n\r\n /**\r\n * Add decorator in the persistent attributes\r\n */\r\n getPersistentAttributes() {\r\n let memento = super.getPersistentAttributes();\r\n\r\n if (memento.source.decoration) {\r\n memento.source.decorator = {\r\n bgColor: this.sourceDecorator.backgroundColor.hashString,\r\n height: this.sourceDecorator.height,\r\n width: this.sourceDecorator.width\r\n };\r\n }\r\n\r\n if (memento.target.decoration) {\r\n memento.target.decorator = {\r\n bgColor: this.targetDecorator.backgroundColor.hashString,\r\n height: this.targetDecorator.height,\r\n width: this.targetDecorator.width\r\n };\r\n }\r\n\r\n return memento;\r\n }\r\n\r\n setPersistentAttributes(memento) {\r\n super.setPersistentAttributes(memento);\r\n this.attr({ color: TRANSITION_COLOR });\r\n if (this.sourceDecorator && memento.source.decorator) {\r\n this.sourceDecorator.setBackgroundColor(TRANSITION_COLOR);\r\n this.sourceDecorator.setDimension(memento.source.decorator.width, memento.source.decorator.height);\r\n }\r\n\r\n if (this.targetDecorator && memento.target.decorator) {\r\n this.targetDecorator.setBackgroundColor(TRANSITION_COLOR);\r\n this.targetDecorator.setDimension(memento.target.decorator.width, memento.target.decorator.height);\r\n }\r\n }\r\n\r\n setLabel(label: string): void {\r\n this.label = label;\r\n this._displayInfo();\r\n }\r\n}\r\n","/*\r\n * Pour les icônes, il faut aller chercher sur le site https://icones8.fr/\r\n */\r\n\r\nexport const NODE_LIST: any = {\r\n nodeAnswerList: {\r\n name: 'node_answer_list',\r\n defaultLabel: 'Node answer_list',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#0027e8\",\r\n icon: \"flow-chart\",\r\n iconStyle: \"material-outlined\",\r\n iconColor: \"ffffff\"\r\n },\r\n nodeAnswerBool: {\r\n name: 'node_answer_bool',\r\n defaultLabel: 'Node answer_bool',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#85bdbe\",\r\n icon: \"checked-2--v1\",\r\n iconStyle: \"material-outlined\",\r\n iconColor: \"000000\"\r\n },\r\n nodeComputation: {\r\n name: 'node_computation',\r\n defaultLabel: 'Node computation',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#ff9d00\",\r\n icon: \"calculator--v2\",\r\n iconStyle: \"material-outlined\",\r\n iconColor: \"000000\"\r\n },\r\n nodeQuestionResult: {\r\n name: 'node_question_result',\r\n defaultLabel: 'Node question result',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#fff200\",\r\n icon: \"external-question-call-to-action-bearicons-glyph-bearicons\",\r\n iconStyle: \"external-bearicons-glyph-bearicons\",\r\n iconColor: \"000000\",\r\n className: 'square',\r\n end: true\r\n },\r\n nodeScript: {\r\n name: 'node_script',\r\n defaultLabel: 'Node script',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#632704\",\r\n icon: \"source-code\",\r\n iconStyle: \"material-outlined\",\r\n iconColor: \"ffffff\"\r\n },\r\n nodeRange: {\r\n name: 'node_range',\r\n defaultLabel: 'Node range',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#44db42\",\r\n icon: \"more-or-equal\",\r\n iconStyle: \"ios-glyphs\",\r\n iconColor: \"000000\"\r\n },\r\n nodeResult: {\r\n name: 'node_result',\r\n defaultLabel: 'Node result',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#00f2ff\",\r\n icon: \"tags\",\r\n iconStyle: \"material-outlined\",\r\n iconColor: \"000000\",\r\n className: 'square',\r\n end: true\r\n },\r\n nodeMin: {\r\n name: 'node_min',\r\n defaultLabel: 'Node min',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#9300bf\",\r\n icon: \"zoom-out--v1\",\r\n iconStyle: \"material-outlined\",\r\n iconColor: \"ffffff\"\r\n },\r\n nodeMax: {\r\n name: 'node_max',\r\n defaultLabel: 'Node max',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#ff0000\",\r\n icon: \"zoom-in--v1\",\r\n iconStyle: \"material-outlined\",\r\n iconColor: \"000000\"\r\n },\r\n nodeConcat: {\r\n name: 'node_concat',\r\n defaultLabel: 'Node concat',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#5a68ad\",\r\n icon: \"dashboard-layout\",\r\n iconStyle: \"material-outlined\",\r\n iconColor: \"ffffff\"\r\n },\r\n nodeMultipleAnswerList: {\r\n name: 'node_multiple_answer_list',\r\n defaultLabel: 'Node multiple_answer_list',\r\n shapeBackgroundColor: \"rgba(209, 209, 209,1)\",\r\n iconBackgroundColor: \"#97bd5e\",\r\n icon: \"list\",\r\n iconStyle: \"material-outlined\",\r\n iconColor: \"ffffff\",\r\n },\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\ndeclare var window: any;\r\n\r\nexport class NodeAnswerList extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeAnswerList.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeAnswerList.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeAnswerList.defaultLabel,\r\n evaluatedElementRadio: null,\r\n evaluatedElement: null,\r\n branches: []\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Circle({\r\n bgColor: NODE_LIST.nodeAnswerList.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeAnswerList.iconStyle}/96/${NODE_LIST.nodeAnswerList.iconColor}/${NODE_LIST.nodeAnswerList.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\n\r\nexport class NodeAnswerBool extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeAnswerBool.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeAnswerBool.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeAnswerBool.defaultLabel,\r\n evaluatedElementRadio: null,\r\n evaluatedElement: null,\r\n branches: []\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Circle({\r\n bgColor: NODE_LIST.nodeAnswerBool.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeAnswerBool.iconStyle}/96/${NODE_LIST.nodeAnswerBool.iconColor}/${NODE_LIST.nodeAnswerBool.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\n\r\nexport class NodeRange extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeRange.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeRange.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeRange.defaultLabel,\r\n evaluatedElementRadio: null,\r\n evaluatedElement: null,\r\n branches: []\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Circle({\r\n bgColor: NODE_LIST.nodeRange.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeRange.iconStyle}/96/${NODE_LIST.nodeRange.iconColor}/${NODE_LIST.nodeRange.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n upPort.setDraggable(false);\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n downPort.setDraggable(false);\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\n\r\nexport class NodeComputation extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeComputation.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeComputation.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeComputation.defaultLabel,\r\n lhs: {},\r\n operator: null,\r\n rhs: {}\r\n\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.operator ?? this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Circle({\r\n bgColor: NODE_LIST.nodeComputation.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeComputation.iconStyle}/96/${NODE_LIST.nodeComputation.iconColor}/${NODE_LIST.nodeComputation.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //remove ports\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setDraggable(false);\r\n upPort.setName('up');\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setDraggable(false);\r\n downPort.setName('down');\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\n\r\nexport class NodeQuestionResult extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeQuestionResult.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeQuestionResult.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeQuestionResult.defaultLabel,\r\n question: null,\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Rectangle({\r\n bgColor: NODE_LIST.nodeQuestionResult.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeQuestionResult.iconStyle}/96/${NODE_LIST.nodeQuestionResult.iconColor}/${NODE_LIST.nodeQuestionResult.icon}.png`, height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\n\r\nexport class NodeResult extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeResult.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeResult.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeResult.defaultLabel,\r\n value: {value: null, type: null}\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Rectangle({\r\n bgColor: NODE_LIST.nodeResult.iconBackgroundColor,\r\n width: 50,\r\n height: 50\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeResult.iconStyle}/96/${NODE_LIST.nodeResult.iconColor}/${NODE_LIST.nodeResult.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\n\r\nexport class NodeMin extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeMin.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeMin.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeMin.defaultLabel,\r\n nodes: [],\r\n decisionTrees: [],\r\n scripts: [],\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Circle({\r\n bgColor: NODE_LIST.nodeMin.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeMin.iconStyle}/96/${NODE_LIST.nodeMin.iconColor}/${NODE_LIST.nodeMin.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\n\r\nexport class NodeMax extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeMax.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeMax.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeMax.defaultLabel,\r\n nodes: [],\r\n decisionTrees: [],\r\n scripts: [],\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Circle({\r\n bgColor: NODE_LIST.nodeMax.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeMax.iconStyle}/96/${NODE_LIST.nodeMax.iconColor}/${NODE_LIST.nodeMax.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {ShapeError} from \"../models/shape-error\";\r\nimport {ShapeErrorTypes} from \"../enums/shape-error-types.enum\";\r\nconst draw2d2 = draw2d as any;\r\nconst TRANSITION_COLOR = '#ff0000';\r\n\r\nexport class TransitionLHS extends draw2d2.Connection {\r\n NAME = 'lhs';\r\n\r\n label: any = null;\r\n\r\n constructor(sourceFigure?: any, targetFigure?: any) {\r\n super({\r\n router: new draw2d2.layout.connection.VertexRouter(),\r\n name: 'lhs',\r\n selectable: false,\r\n userData: {\r\n name: 'lhs'\r\n }\r\n });\r\n\r\n if(sourceFigure && targetFigure) {\r\n for (const port of sourceFigure.hybridPorts.data) {\r\n if(port.name === 'down') {\r\n this.setSource(port)\r\n }\r\n }\r\n for (const port of targetFigure.hybridPorts.data) {\r\n if(port.name === 'up') {\r\n this.setTarget(port)\r\n }\r\n }\r\n }\r\n\r\n let bar = new draw2d2.decoration.connection.BarDecorator();\r\n bar.setDimension(50, 30);\r\n bar.setBackgroundColor('#ff0000');\r\n this.setSourceDecorator(bar);\r\n this.setColor('#ff0000');\r\n\r\n this._displayInfo();\r\n }\r\n\r\n private _displayInfo() {\r\n\r\n // remove old table\r\n if (this.tableInfo) {\r\n this.remove(this.tableInfo);\r\n }\r\n\r\n this.tableInfo = new draw2d.shape.layout.TableLayout({\r\n stroke: 0,\r\n resizeable: true,\r\n bgColor: '#FFFFFF',\r\n });\r\n\r\n let header: any[] = [];\r\n\r\n header.push(this.label ?? this.NAME);\r\n\r\n this.tableInfo.addRow(...header);\r\n this.tableInfo.setPadding(0);\r\n\r\n this.add(this.tableInfo, new draw2d.layout.locator.PolylineMidpointLocator());\r\n }\r\n\r\n /**\r\n * Add decorator in the persistent attributes\r\n */\r\n getPersistentAttributes() {\r\n let memento = super.getPersistentAttributes();\r\n\r\n if (memento.source.decoration) {\r\n memento.source.decorator = {\r\n bgColor: this.sourceDecorator.backgroundColor.hashString,\r\n height: this.sourceDecorator.height,\r\n width: this.sourceDecorator.width\r\n };\r\n }\r\n\r\n if (memento.target.decoration) {\r\n memento.target.decorator = {\r\n bgColor: this.targetDecorator.backgroundColor.hashString,\r\n height: this.targetDecorator.height,\r\n width: this.targetDecorator.width\r\n };\r\n }\r\n\r\n return memento;\r\n }\r\n\r\n setPersistentAttributes(memento) {\r\n super.setPersistentAttributes(memento);\r\n this.attr({ color: TRANSITION_COLOR });\r\n if (this.sourceDecorator && memento.source.decorator) {\r\n this.sourceDecorator.setBackgroundColor(TRANSITION_COLOR);\r\n this.sourceDecorator.setDimension(memento.source.decorator.width, memento.source.decorator.height);\r\n }\r\n\r\n if (this.targetDecorator && memento.target.decorator) {\r\n this.targetDecorator.setBackgroundColor(TRANSITION_COLOR);\r\n this.targetDecorator.setDimension(memento.target.decorator.width, memento.target.decorator.height);\r\n }\r\n }\r\n\r\n setLabel(label: string): void {\r\n this.label = label;\r\n this._displayInfo();\r\n }\r\n}\r\n","import draw2d from \"draw2d\";\r\nimport {ShapeError} from \"../models/shape-error\";\r\nimport {ShapeErrorTypes} from \"../enums/shape-error-types.enum\";\r\nconst draw2d2 = draw2d as any;\r\nconst TRANSITION_COLOR = '#6cc93a';\r\n\r\nexport class TransitionRHS extends draw2d2.Connection {\r\n NAME = 'rhs';\r\n\r\n label: any = null;\r\n\r\n constructor(sourceFigure?: any, targetFigure?: any) {\r\n super({\r\n router: new draw2d2.layout.connection.VertexRouter(),\r\n name: 'rhs',\r\n selectable: false,\r\n userData: {\r\n name: 'rhs'\r\n }\r\n });\r\n\r\n if(sourceFigure && targetFigure) {\r\n for (const port of sourceFigure.hybridPorts.data) {\r\n if(port.name === 'down') {\r\n this.setSource(port)\r\n }\r\n }\r\n for (const port of targetFigure.hybridPorts.data) {\r\n if(port.name === 'up') {\r\n this.setTarget(port)\r\n }\r\n }\r\n }\r\n\r\n // add arrow decorator\r\n let bar = new draw2d2.decoration.connection.BarDecorator();\r\n bar.setDimension(50, 30);\r\n bar.setBackgroundColor(TRANSITION_COLOR);\r\n this.setSourceDecorator(bar);\r\n this.setColor(TRANSITION_COLOR);\r\n\r\n this._displayInfo();\r\n }\r\n\r\n private _displayInfo() {\r\n\r\n // remove old table\r\n if (this.tableInfo) {\r\n this.remove(this.tableInfo);\r\n }\r\n\r\n this.tableInfo = new draw2d.shape.layout.TableLayout({\r\n stroke: 0,\r\n resizeable: true,\r\n bgColor: '#FFFFFF',\r\n });\r\n\r\n let header: any[] = [];\r\n\r\n header.push(this.label ?? this.NAME);\r\n\r\n this.tableInfo.addRow(...header);\r\n this.tableInfo.setPadding(0);\r\n\r\n this.add(this.tableInfo, new draw2d.layout.locator.PolylineMidpointLocator());\r\n }\r\n\r\n /**\r\n * Add decorator in the persistent attributes\r\n */\r\n getPersistentAttributes() {\r\n let memento = super.getPersistentAttributes();\r\n\r\n if (memento.source.decoration) {\r\n memento.source.decorator = {\r\n bgColor: this.sourceDecorator.backgroundColor.hashString,\r\n height: this.sourceDecorator.height,\r\n width: this.sourceDecorator.width\r\n };\r\n }\r\n\r\n if (memento.target.decoration) {\r\n memento.target.decorator = {\r\n bgColor: this.targetDecorator.backgroundColor.hashString,\r\n height: this.targetDecorator.height,\r\n width: this.targetDecorator.width\r\n };\r\n }\r\n\r\n return memento;\r\n }\r\n\r\n setPersistentAttributes(memento) {\r\n super.setPersistentAttributes(memento);\r\n this.attr({ color: TRANSITION_COLOR });\r\n if (this.sourceDecorator && memento.source.decorator) {\r\n this.sourceDecorator.setBackgroundColor(TRANSITION_COLOR);\r\n this.sourceDecorator.setDimension(memento.source.decorator.width, memento.source.decorator.height);\r\n }\r\n\r\n if (this.targetDecorator && memento.target.decorator) {\r\n this.targetDecorator.setBackgroundColor(TRANSITION_COLOR);\r\n this.targetDecorator.setDimension(memento.target.decorator.width, memento.target.decorator.height);\r\n }\r\n }\r\n\r\n setLabel(label: string): void {\r\n this.label = label;\r\n this._displayInfo();\r\n }\r\n}\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\n\r\nexport class NodeScript extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeScript.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeScript.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeScript.defaultLabel,\r\n question: null,\r\n script: null,\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Circle({\r\n bgColor: NODE_LIST.nodeScript.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeScript.iconStyle}/96/${NODE_LIST.nodeScript.iconColor}/${NODE_LIST.nodeScript.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\ndeclare var window: any;\r\n\r\n\r\nexport class NodeConcat extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeConcat.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeConcat.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeConcat.defaultLabel,\r\n values: []\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Circle({\r\n bgColor: NODE_LIST.nodeConcat.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeConcat.iconStyle}/96/${NODE_LIST.nodeConcat.iconColor}/${NODE_LIST.nodeConcat.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n upPort.setDraggable(false);\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n downPort.setDraggable(false);\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {NODE_LIST} from \"../enums/shape\";\r\n\r\nconst draw2d2 = draw2d as any;\r\ndeclare var window: any;\r\n\r\nexport class NodeMultipleAnswerList extends draw2d2.SVGFigure {\r\n\r\n NAME = NODE_LIST.nodeMultipleAnswerList.name;\r\n\r\n nodeLabel: any;\r\n label: any;\r\n\r\n\r\n constructor(x = 0, y = 0, name = '') {\r\n super({\r\n x,\r\n y,\r\n radius: 25,\r\n width: 250,\r\n height: 40,\r\n resizeable: false,\r\n bgColor: NODE_LIST.nodeMultipleAnswerList.shapeBackgroundColor,\r\n userData: {\r\n name: NODE_LIST.nodeMultipleAnswerList.defaultLabel,\r\n evaluatedElementRadio: null,\r\n evaluatedElement: null,\r\n branches: []\r\n }\r\n });\r\n\r\n this.label = new draw2d.shape.basic.Label({\r\n text: this.userData.name,\r\n resizeable: false,\r\n stroke: 0,\r\n selectable: false\r\n });\r\n this.add(this.label, new draw2d.layout.locator.CenterLocator());\r\n const circle = new draw2d.shape.basic.Circle({\r\n bgColor: NODE_LIST.nodeMultipleAnswerList.iconBackgroundColor,\r\n width: 50,\r\n height: 50,\r\n });\r\n var image = new draw2d.shape.basic.Image({\r\n path: `https://img.icons8.com/${NODE_LIST.nodeMultipleAnswerList.iconStyle}/96/${NODE_LIST.nodeMultipleAnswerList.iconColor}/${NODE_LIST.nodeMultipleAnswerList.icon}.png`,\r\n height: 35,\r\n width: 35\r\n });\r\n circle.add(image, new draw2d.layout.locator.CenterLocator());\r\n this.add(circle, new draw2d.layout.locator.XYRelPortLocator(0,-10));\r\n\r\n\r\n //Change port location\r\n this.outputPorts.data = [];\r\n const upPort = new draw2d.HybridPort();\r\n upPort.setName('up');\r\n const downPort = new draw2d.HybridPort();\r\n downPort.setName('down');\r\n this.addPort(upPort, new draw2d.layout.locator.TopLocator());\r\n this.addPort(downPort, new draw2d.layout.locator.BottomLocator());\r\n }\r\n\r\n setLabel(label: string): void {\r\n let text = `${label}`;\r\n\r\n this.label.attr({\r\n text: text,\r\n fontColor: '#000000', bold: false\r\n });\r\n }\r\n}\r\n\r\n","import draw2d from \"draw2d\";\r\nimport {ShapeError} from \"../models/shape-error\";\r\nimport {ShapeErrorTypes} from \"../enums/shape-error-types.enum\";\r\nconst draw2d2 = draw2d as any;\r\nconst TRANSITION_COLOR = '#e98b3a';\r\nconst NAME = 'concat_transition'\r\n\r\nexport class TransitionConcat extends draw2d2.Connection {\r\n\r\n NAME = 'transition_concat';\r\n\r\n label: any = null;\r\n\r\n constructor(sourceFigure?: any, targetFigure?: any) {\r\n super({\r\n router: new draw2d2.layout.connection.VertexRouter(),\r\n name: 'Transition',\r\n selectable: !sourceFigure,\r\n userData: {\r\n name: 'Transition'\r\n }\r\n });\r\n if(sourceFigure && targetFigure) {\r\n for (const port of sourceFigure.hybridPorts.data) {\r\n if(port.name === 'down') {\r\n this.setSource(port)\r\n }\r\n }\r\n for (const port of targetFigure.hybridPorts.data) {\r\n if(port.name === 'up') {\r\n this.setTarget(port)\r\n }\r\n }\r\n }\r\n\r\n // add bar decorator\r\n let bar = new draw2d2.decoration.connection.BarDecorator();\r\n bar.setDimension(50, 30);\r\n bar.setBackgroundColor(TRANSITION_COLOR);\r\n this.setSourceDecorator(bar);\r\n this.setColor(TRANSITION_COLOR);\r\n\r\n this._displayInfo();\r\n }\r\n\r\n private _displayInfo() {\r\n\r\n // remove old table\r\n if (this.tableInfo) {\r\n this.remove(this.tableInfo);\r\n }\r\n\r\n this.tableInfo = new draw2d.shape.layout.TableLayout({\r\n stroke: 0,\r\n resizeable: true,\r\n bgColor: '#FFFFFF',\r\n });\r\n\r\n let header: any[] = [];\r\n\r\n header.push(this.label ?? this.NAME);\r\n\r\n this.tableInfo.addRow(...header);\r\n this.tableInfo.setPadding(0);\r\n\r\n //this.add(this.tableInfo, new decision-tree.layout.locator.PolylineMidpointLocator());\r\n }\r\n\r\n /**\r\n * Add decorator in the persistent attributes\r\n */\r\n getPersistentAttributes() {\r\n let memento = super.getPersistentAttributes();\r\n\r\n if (memento.source.decoration) {\r\n memento.source.decorator = {\r\n bgColor: this.sourceDecorator.backgroundColor.hashString,\r\n height: this.sourceDecorator.height,\r\n width: this.sourceDecorator.width,\r\n };\r\n }\r\n\r\n if (memento.target.decoration) {\r\n memento.target.decorator = {\r\n bgColor: this.targetDecorator.backgroundColor.hashString,\r\n height: this.targetDecorator.height,\r\n width: this.targetDecorator.width,\r\n };\r\n }\r\n\r\n return memento;\r\n }\r\n\r\n setPersistentAttributes(memento) {\r\n super.setPersistentAttributes(memento);\r\n this.attr({ color: TRANSITION_COLOR });\r\n if (this.sourceDecorator && memento.source.decorator) {\r\n this.sourceDecorator.setBackgroundColor(TRANSITION_COLOR);\r\n this.sourceDecorator.setDimension(memento.source.decorator.width, memento.source.decorator.height);\r\n }\r\n\r\n if (this.targetDecorator && memento.target.decorator) {\r\n this.targetDecorator.setBackgroundColor(TRANSITION_COLOR);\r\n this.targetDecorator.setDimension(memento.target.decorator.width, memento.target.decorator.height);\r\n }\r\n }\r\n\r\n setLabel(label: string): void {\r\n this.label = label;\r\n this._displayInfo();\r\n }\r\n}\r\n","import \"./import-jquery\";\r\nimport \"jquery-ui-bundle\";\r\nimport \"jquery-ui-bundle/jquery-ui.css\";\r\nimport draw2d from \"draw2d\";\r\nimport {Transition} from \"./shapes/transition\";\r\nimport {Toast} from \"primereact/toast\";\r\nimport {NodeAnswerList} from \"./shapes/node-answer-list\";\r\nimport canvas from \"./canvas\";\r\nimport {NodeAnswerBool} from \"./shapes/node-answer-bool\";\r\nimport {NodeRange} from \"./shapes/node-range\";\r\nimport {NodeComputation} from \"./shapes/node-computation\";\r\nimport {NodeQuestionResult} from \"./shapes/node-question-result\";\r\nimport {NodeResult} from \"./shapes/node-result\";\r\nimport {NodeMin} from \"./shapes/node-min\";\r\nimport {NodeMax} from \"./shapes/node-max\";\r\nimport {TransitionLHS} from \"./shapes/transition-lhs\";\r\nimport {TransitionRHS} from \"./shapes/transition-rhs\";\r\nimport {NodeScript} from \"./shapes/node-script\";\r\nimport {NodeConcat} from \"./shapes/node-concat\";\r\nimport {NodeMultipleAnswerList} from \"./shapes/node-multiple-answer-list\";\r\nimport {TransitionConcat} from \"./shapes/transition-concat\";\r\n\r\nexport class Reader extends draw2d.io.json.Reader {\r\n\r\n canvas: any\r\n\r\n constructor(canvas ?: any) {\r\n super();\r\n this.canvas = canvas;\r\n }\r\n\r\n loadJSONAndSchema(canvas: any, json: string) {\r\n super.unmarshal(canvas, json);\r\n }\r\n\r\n /**\r\n * Override of the decision-tree method -> This method tells decision-tree to use our custom classes for given figures.\r\n * @param {string} type - the NAME of the figure (see ./enums/shape-names.enum.ts)\r\n * @returns - the created figure.\r\n */\r\n createFigureFromType(type: string) {\r\n switch (type) {\r\n case 'Transition':\r\n return new Transition();\r\n case 'node':\r\n return new NodeAnswerList();\r\n case 'node_answer_bool':\r\n return new NodeAnswerBool();\r\n case 'node_answer_list':\r\n return new NodeAnswerList();\r\n case 'node_min':\r\n return new NodeMin();\r\n case 'node_max':\r\n return new NodeMax();\r\n case 'node_range':\r\n return new NodeRange();\r\n case 'node_computation':\r\n return new NodeComputation();\r\n case 'node_question_result':\r\n return new NodeQuestionResult();\r\n case 'node_result':\r\n return new NodeResult();\r\n case 'lhs':\r\n return new TransitionLHS();\r\n case 'rhs':\r\n return new TransitionRHS();\r\n case 'node_script':\r\n return new NodeScript();\r\n case 'node_concat':\r\n return new NodeConcat();\r\n case 'node_multiple_answer_list':\r\n return new NodeMultipleAnswerList();\r\n case 'transition_concat':\r\n return new TransitionConcat();\r\n default:\r\n return super.createFigureFromType(type);\r\n }\r\n }\r\n\r\n}\r\n","import draw2d from \"draw2d\";\r\nimport {Transition} from \"../shapes/transition\";\r\nconst draw2d2 = draw2d as any;\r\n\r\nexport class ConnectionCreatePolicy extends draw2d2.policy.connection.DragConnectionCreatePolicy {\r\n NAME = 'ConnectionCreatePolicy';\r\n canvas: any;\r\n\r\n constructor(canvas?: any) {\r\n super();\r\n this.canvas = canvas;\r\n }\r\n\r\n createConnection(){\r\n return new Transition();\r\n }\r\n}\r\n","import {AxiosResponse} from 'axios';\r\nimport {APIService} from \"../../shared/services/APIService\";\r\nimport {DecisionTree} from \"../../admin/models/DecisionTree\";\r\nimport {Schema} from \"../models/Schema\";\r\n\r\nexport class DecisionTreeEditorService extends APIService {\r\n\r\n /**\r\n * save decision trees schema\r\n */\r\n save(files: File[]) {\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append('files', file);\r\n }\r\n return this.http.post(`/editor-decision-trees/upload`, formData);\r\n }\r\n\r\n /**\r\n * Get many decision trees\r\n */\r\n getMany(): Promise> {\r\n return this.http.get('/editor-decision-trees');\r\n }\r\n\r\n /**\r\n * Download a decision tree by name\r\n */\r\n downloadOne(name: string) {\r\n return this.http.get(`/editor-decision-trees/${name}/download`, {responseType: 'blob'});\r\n }\r\n\r\n /**\r\n * Upload many decision trees\r\n */\r\n uploadMany(files: File[]) {\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append('files', file);\r\n }\r\n return this.http.post(`/editor-decision-trees/upload`, formData);\r\n }\r\n\r\n /**\r\n * Delete one decision tree\r\n */\r\n deleteOne(key: string) {\r\n return this.http.delete(`/editor-decision-trees/${key}`);\r\n }\r\n\r\n saveSchema(schema: Schema): Promise> {\r\n return this.http.put('/editor-decision-trees/upload', schema);\r\n }\r\n\r\n getOne(key: string): Promise> {\r\n return this.http.get(`/editor-decision-trees/${key}`);\r\n }\r\n\r\n findAll(): Promise> {\r\n return this.http.get(`/editor-decision-trees`);\r\n }\r\n\r\n updateSchemaName(schema: Schema | null, currentTreeName: string | null) {\r\n return this.http.put(`/editor-decision-trees/update-name/${currentTreeName}`, schema);\r\n }\r\n\r\n createSchema(datas: { name: any; key: any }): Promise> {\r\n return this.http.post('/editor-decision-trees', datas);\r\n }\r\n\r\n getBetonJSON(schema: Schema): Promise> {\r\n return this.http.get(`/decision-trees/get-beton-json/${schema.key}`);\r\n }\r\n}\r\n","export class Schema {\r\n constructor(\r\n readonly key: string,\r\n readonly name: string,\r\n readonly json: string,\r\n readonly isEditor?: boolean\r\n ) {\r\n }\r\n}\r\n","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/components/button/Button\";\r\nimport \"./topbar.scss\";\r\nimport draw2d from \"draw2d\";\r\nimport { FormService } from \"../../../form/services/FormService\";\r\nimport { DecisionTreeEditorService } from \"../../services/DecisionTreeEditorService\";\r\nimport { SeverityEnum } from \"../../../shared/enum/SeverityEnum\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport { Schema } from \"../../models/Schema\";\r\nimport { Toolbar } from \"primereact/toolbar\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { Input } from \"@bbri/ui\";\r\nimport { InputText } from \"primereact/inputtext\";\r\n\r\ninterface States {\r\n displayDialog: boolean;\r\n schema: Schema | null;\r\n currentTreeName: any;\r\n currentKeyName: string | null;\r\n showConfirmDeleteDialog: boolean;\r\n showJSONDialog: boolean;\r\n currentZoom: number;\r\n currentBetonJSON: string | null;\r\n lockSelect: boolean;\r\n}\r\n\r\ninterface Props extends WithTranslation {\r\n view: any;\r\n schema: Schema | null;\r\n refreshSchemas: (newSchemaName: string, key: string) => void;\r\n setChanges: (changes: boolean) => void;\r\n changes: boolean;\r\n hideSidebar: () => void;\r\n resetSidebar: () => void;\r\n currenToolsName: string;\r\n setCurrentToolsName: (currentToolsName: string) => void;\r\n canvas: any;\r\n changeSchemaName: (name) => void;\r\n refreshSchemasList: () => void;\r\n lockSelect: (lockSelect: boolean) => void;\r\n}\r\n\r\nclass Topbar extends React.Component {\r\n\r\n private t: TFunction;\r\n private formService: FormService;\r\n private decisionTreeEditorService: DecisionTreeEditorService;\r\n private toast: Toast | null;\r\n private leftContents: any;\r\n private rightContents: any;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.decisionTreeEditorService = new DecisionTreeEditorService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.state = {\r\n displayDialog: false,\r\n schema: this.props.schema,\r\n currentTreeName: null,\r\n currentKeyName: null,\r\n showConfirmDeleteDialog: false,\r\n showJSONDialog: false,\r\n currentZoom: 1.5,\r\n currentBetonJSON: null,\r\n lockSelect: false\r\n\r\n };\r\n }\r\n\r\n saveSchema() {\r\n let nbrRootNodes = 0;\r\n for (const figure of this.props.canvas.figures.data) {\r\n if (figure.userData.root) {\r\n nbrRootNodes++;\r\n }\r\n }\r\n if (nbrRootNodes > 1) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `The schema has more than one root node!`,\r\n });\r\n return;\r\n }\r\n const writer = new draw2d.io.json.Writer();\r\n writer.marshal(this.props.view, json => {\r\n if (this.props.schema) {\r\n let hasRootNode = false;\r\n for (const figure of this.props.canvas.figures.data) {\r\n if (figure.userData.root) {\r\n hasRootNode = true;\r\n }\r\n }\r\n if (!hasRootNode) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `The schema doesn't have a root node!`,\r\n });\r\n return;\r\n }\r\n\r\n const schema = new Schema(this.props.schema.key, this.props.schema.name, JSON.stringify(json));\r\n this.decisionTreeEditorService.saveSchema(schema).then(() => {\r\n this.props.setChanges(false);\r\n this.props.refreshSchemasList();\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: 'Schema saved',\r\n });\r\n }).catch((e) => {\r\n if (e.response.status === 400) {\r\n this.toast?.show({\r\n severity: SeverityEnum.WARN,\r\n detail: `Schema has been saved but decision tree is invalid: ${e.response.data.error ?? '/'} `,\r\n });\r\n this.props.setChanges(false);\r\n }\r\n else {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Error occurred while saving schema: ${e.response.data.error?.message ?? 'Error not communicated'}`,\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: 'Select a schema first !',\r\n });\r\n }\r\n });\r\n }\r\n\r\n getBetonJSON() {\r\n this.props.hideSidebar();\r\n const writer = new draw2d.io.json.Writer();\r\n writer.marshal(this.props.view, json => {\r\n if (this.props.schema) {\r\n const schema = new Schema(this.props.schema.key, this.props.schema.name, JSON.stringify(json));\r\n this.decisionTreeEditorService.getBetonJSON(schema).then((res: any) => {\r\n this.setState({\r\n showJSONDialog: true,\r\n currentBetonJSON: JSON.stringify(res.data.tree, null, 4)\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n private _editSchemaName() {\r\n this.setState({\r\n displayDialog: true\r\n });\r\n }\r\n\r\n private _renderDialogFooter() {\r\n return (\r\n
    \r\n this.setState({ displayDialog: false })}\r\n className=\"p-mb-2\"\r\n />\r\n this._updateSchemaName()}\r\n className=\"p-mb-2\"\r\n />\r\n
    \r\n );\r\n }\r\n\r\n private _renderDeleteFooter() {\r\n return (\r\n
    \r\n {\r\n this.props.hideSidebar();\r\n this.setState({ showConfirmDeleteDialog: false });\r\n }}\r\n style={{ backgroundColor: '#0087b7', borderColor: '#0087b7' }}\r\n className=\"p-button-danger\"\r\n />\r\n this._deleteDecisionTree()}\r\n className=\"p-button-danger\"\r\n style={{ backgroundColor: '#e98b3a', borderColor: '#e98b3a' }}\r\n />\r\n
    \r\n );\r\n }\r\n\r\n private _updateSchemaName() {\r\n if (!this.state.currentTreeName) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: \"The name hasn’t been changed!\",\r\n });\r\n return;\r\n }\r\n if (this.props.schema) {\r\n this.decisionTreeEditorService.updateSchemaName(this.props.schema, this.state.currentTreeName).then((res) => {\r\n if (res) {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: 'The schema name has been updated!',\r\n });\r\n this.setState({\r\n displayDialog: false\r\n });\r\n this.props.refreshSchemas(this.state.currentTreeName as string, this.props.schema?.key as string);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private _deleteDecisionTree() {\r\n if (this.props.schema) {\r\n this.decisionTreeEditorService.deleteOne(this.props.schema.key).then((res) => {\r\n if (res) {\r\n this.setState({\r\n showConfirmDeleteDialog: false\r\n });\r\n this.props.refreshSchemas('', '');\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: 'Schema deleted',\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n changeZoom(factor: number) {\r\n if (this.state.currentZoom + factor > 0.1 && this.state.currentZoom + factor < 5) {\r\n this.props.view.setZoom(this.state.currentZoom + factor, true);\r\n this.setState({\r\n currentZoom: this.state.currentZoom + factor\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Reset zoom to factor 1\r\n */\r\n resetZoom() {\r\n this.props.view.setZoom(1.5, true);\r\n this.setState({\r\n currentZoom: 1.5\r\n });\r\n }\r\n\r\n render() {\r\n\r\n this.leftContents = (\r\n \r\n

    Decision tree editor

    \r\n
    \r\n
    \r\n {\r\n this.props.changeSchemaName(e.currentTarget.value);\r\n }}\r\n />\r\n

    {this.props.schema?.key ? `<${this.props.schema.key}>` : ''}

    \r\n
    \r\n
    \r\n
    \r\n );\r\n this.rightContents = (\r\n
    \r\n
    \r\n

    {this.props.currenToolsName}

    \r\n
    \r\n \r\n
    \r\n );\r\n\r\n let schemaName;\r\n if (!this.props.schema) {\r\n schemaName = (\r\n
    \r\n \r\n {\r\n this.setState({\r\n currentKeyName: e.target.value\r\n });\r\n }}\r\n />\r\n
    );\r\n }\r\n\r\n return (\r\n
    \r\n (this.toast = el)}/>\r\n \r\n\r\n\r\n {\r\n this.setState({\r\n displayDialog: false\r\n }, () => {\r\n this.props.resetSidebar();\r\n });\r\n }}>\r\n \r\n {\r\n this.setState({\r\n currentTreeName: e.target.value\r\n });\r\n }}\r\n />\r\n {schemaName}\r\n \r\n this.setState({ showConfirmDeleteDialog: false }, () => {\r\n this.props.resetSidebar();\r\n })}\r\n header=\"Confirmation\"\r\n footer={this._renderDeleteFooter()}\r\n >\r\n
    \r\n \r\n Do you want to delete this decision tree ?\r\n
    \r\n \r\n {\r\n this.setState({\r\n showJSONDialog: false\r\n }, () => {\r\n this.props.resetSidebar();\r\n });\r\n }}\r\n header={this.props.schema?.key ?? ''}\r\n footer={\r\n
    \r\n {\r\n prompt(\"Copy to clipboard: Ctrl+C, Enter\", this.state.currentBetonJSON ?? '');\r\n }}\r\n className=\"p-button-danger\"\r\n />\r\n
    \r\n }\r\n visible={this.state.showJSONDialog}\r\n style={{ width: '1000px', height: '500px' }}\r\n >\r\n
    {this.state.currentBetonJSON}
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(Topbar);\r\n","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { Schema } from \"../../models/Schema\";\r\nimport React from \"react\";\r\nimport { TFunction } from \"i18next\";\r\nimport { DecisionTreeEditorService } from \"../../services/DecisionTreeEditorService\";\r\nimport { Menu } from \"primereact/menu\";\r\nimport { Button } from \"primereact/components/button/Button\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport \"./sidebar.scss\";\r\nimport { SeverityEnum } from \"../../../shared/enum/SeverityEnum\";\r\nimport draw2d from \"draw2d\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport { NODE_LIST } from \"../enums/shape\";\r\nimport { InputText } from \"primereact/inputtext\";\r\nimport { Toolbar } from \"primereact/toolbar\";\r\n\r\ninterface States {\r\n schemas: Schema[] | null;\r\n schemasItems: any[];\r\n currentSchema: Schema | null;\r\n isSchemasRefreshing: boolean;\r\n showNotSaveDialog: boolean;\r\n menuFilter: string;\r\n loading: boolean;\r\n}\r\n\r\ninterface Props extends WithTranslation {\r\n onClick: any;\r\n refreshSchemas: boolean;\r\n newTree: () => void;\r\n resetRefreshSchemas: () => void;\r\n currentSchemaName: string | null;\r\n currentKeyName: string | null;\r\n changes: boolean;\r\n resetChanges: () => void;\r\n view: any;\r\n schema: Schema | null;\r\n setChanges: (changes: boolean) => void;\r\n setCurrentToolsName: (currentToolsName: string) => void;\r\n}\r\n\r\nclass Sidebar extends React.Component {\r\n\r\n private t: TFunction;\r\n private decisionTreeEditorService: DecisionTreeEditorService;\r\n private schemaMenu: any;\r\n private toast: Toast | null;\r\n private schemas: any = [];\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.decisionTreeEditorService = new DecisionTreeEditorService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.state = {\r\n schemas: null,\r\n schemasItems: [],\r\n currentSchema: null,\r\n isSchemasRefreshing: false,\r\n showNotSaveDialog: false,\r\n menuFilter: '',\r\n loading: false\r\n };\r\n\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.setState({\r\n loading: true\r\n }, () => {\r\n this.decisionTreeEditorService.findAll().then((res) => {\r\n this.setState({\r\n schemas: res.data,\r\n loading: false\r\n });\r\n this._refreshMenuItems();\r\n });\r\n });\r\n\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any) {\r\n\r\n const schema = {\r\n name: nextProps.currentSchemaName,\r\n key: nextProps.currentKeyName,\r\n json: this.state.currentSchema?.json\r\n };\r\n if (nextProps.refreshSchemas) {\r\n // @ts-ignore\r\n this.setState({\r\n isSchemasRefreshing: true,\r\n currentSchema: this.props.schema\r\n });\r\n this._refreshMenuItemsWithAPI();\r\n }\r\n }\r\n\r\n private _refreshMenuItemsWithAPI() {\r\n this.decisionTreeEditorService.findAll().then((res) => {\r\n this.setState({\r\n schemas: res.data\r\n });\r\n this._refreshMenuItems();\r\n });\r\n }\r\n\r\n private _refreshMenuItems() {\r\n this.state.schemasItems.splice(0, this.state.schemasItems.length);\r\n if (this.state.schemas) {\r\n const values: any[] = [];\r\n for (const schema of this.state.schemas) {\r\n values.push({\r\n label: schema.name,\r\n schema,\r\n disabled: (!schema.isEditor || schema.key === this.state.currentSchema?.key),\r\n style: {\r\n backgroundColor: (schema.key === this.state.currentSchema?.key) ? '#85bdbe' : ''\r\n },\r\n command: (e) => {\r\n if (this.props.changes) {\r\n this.schemaMenu = e;\r\n this.setState({\r\n showNotSaveDialog: true\r\n });\r\n }\r\n else {\r\n this.setState({\r\n currentSchema: e.item.schema\r\n }, () => {\r\n this._refreshMenuItems();\r\n this.props.onClick(e.item.schema);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n this.schemas = values;\r\n this.setState({\r\n schemasItems: values\r\n });\r\n if (this.state.isSchemasRefreshing) {\r\n this.props.resetRefreshSchemas();\r\n this.setState({\r\n isSchemasRefreshing: false\r\n });\r\n }\r\n }\r\n }\r\n\r\n private _newTree() {\r\n this.props.newTree();\r\n }\r\n\r\n saveSchema() {\r\n const writer = new draw2d.io.json.Writer();\r\n writer.marshal(this.props.view, json => {\r\n if (this.props.schema) {\r\n const schema = new Schema(this.props.schema.key, this.props.schema.name, JSON.stringify(json));\r\n this.decisionTreeEditorService.saveSchema(schema).then(() => {\r\n this.props.setChanges(false);\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: 'Schema saved',\r\n });\r\n }).catch((e) => {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Decision tree is invalid: ${e.response.data.error?.message ?? 'Error not communicated'}`,\r\n });\r\n });\r\n }\r\n else {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: 'Please select a schema',\r\n });\r\n }\r\n });\r\n }\r\n\r\n private _renderNotSaveFooter() {\r\n return (\r\n
    \r\n this.setState({ showNotSaveDialog: false })}\r\n className=\"p-button-outlined p-mb-2\"\r\n />\r\n {\r\n this.saveSchema();\r\n this.setState({ showNotSaveDialog: false });\r\n this.setState({\r\n currentSchema: this.schemaMenu.item.schema\r\n }, () => {\r\n this._refreshMenuItems();\r\n this.props.onClick(this.schemaMenu.item.schema);\r\n });\r\n }}\r\n className=\"p-mb-2\"\r\n />\r\n {\r\n this.props.resetChanges();\r\n this.setState({ showNotSaveDialog: false });\r\n this.setState({\r\n currentSchema: this.schemaMenu.item.schema\r\n }, () => {\r\n this._refreshMenuItems();\r\n this.props.onClick(this.schemaMenu.item.schema);\r\n });\r\n }}\r\n className=\"p-button-danger p-mb-2\"\r\n />\r\n
    \r\n );\r\n }\r\n\r\n private _getNodeList(end: boolean) {\r\n let content: any[] = [];\r\n for (const i in NODE_LIST) {\r\n if (end) {\r\n if (NODE_LIST[i].end) {\r\n content.push(\r\n
    this.props.setCurrentToolsName('Node: ' + NODE_LIST[i].name)}\r\n onMouseLeave={() => this.props.setCurrentToolsName('')}\r\n title={NODE_LIST[i].defaultLabel}\r\n data-shape={NODE_LIST[i].name}\r\n style={{ backgroundColor: NODE_LIST[i].iconBackgroundColor }}>\r\n \r\n
    \r\n );\r\n }\r\n }\r\n else {\r\n if (!NODE_LIST[i].end) {\r\n content.push(\r\n
    this.props.setCurrentToolsName('Node: ' + NODE_LIST[i].name)}\r\n onMouseLeave={() => this.props.setCurrentToolsName('')}\r\n title={NODE_LIST[i].defaultLabel}\r\n data-shape={NODE_LIST[i].name}\r\n style={{ backgroundColor: NODE_LIST[i].iconBackgroundColor }}>\r\n \r\n
    \r\n );\r\n }\r\n }\r\n }\r\n return content;\r\n\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n (this.toast = el)}/>\r\n
    \r\n {\r\n this.setState({\r\n menuFilter: e.target.value\r\n });\r\n if (e.target.value) {\r\n const schemas = this.schemas;\r\n const schemasFiltered: any = [];\r\n for (const schema of schemas) {\r\n if (schema.label.includes(e.target.value)) {\r\n schemasFiltered.push(schema);\r\n }\r\n }\r\n this.setState({\r\n schemasItems: schemasFiltered\r\n });\r\n }\r\n else {\r\n this._refreshMenuItems();\r\n }\r\n }}\r\n />\r\n \r\n List of trees\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    NODES

    \r\n
    \r\n {\r\n this._getNodeList(false)\r\n }\r\n
    \r\n
    \r\n
    \r\n

    END NODES

    \r\n
    \r\n {\r\n this._getNodeList(true)\r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n (\r\n
    \r\n {\r\n this._newTree();\r\n }}\r\n className=\"p-button-primary\"/>\r\n
    \r\n )}\r\n />\r\n this.setState({ showNotSaveDialog: false })}\r\n header=\"Changes detected !\"\r\n footer={this._renderNotSaveFooter()}\r\n >\r\n
    \r\n \r\n Please choose an action !\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(Sidebar);\r\n","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport { ScriptDTO } from '../dto/ScriptDTO';\r\nimport {Script} from \"../models/Script\";\r\n\r\nexport class AdminScriptsService extends APIService {\r\n\r\n /**\r\n * Get many scripts\r\n */\r\n getMany(): Promise> {\r\n return this.http.get('/scripts');\r\n }\r\n\r\n /**\r\n * Get the text of a script by name\r\n */\r\n getOne(name: string): Promise>{\r\n return this.http.get(`/scripts/${name}/text`);\r\n }\r\n \r\n /**\r\n * Download a script by name\r\n */\r\n downloadOne(name: string) {\r\n return this.http.get(`/scripts/${name}/download`, { responseType: 'blob' });\r\n }\r\n\r\n\r\n /**\r\n * Upload many scripts\r\n */\r\n uploadMany(files: File[]) {\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append('files', file);\r\n }\r\n return this.http.post(`/scripts/upload`, formData);\r\n }\r\n\r\n /**\r\n * Upload one script\r\n */\r\n uploadOne(dto: ScriptDTO) {\r\n return this.http.post(`/scripts/uploadone`, dto);\r\n }\r\n\r\n /**\r\n * Delete one script\r\n */\r\n deleteOne(name: string) {\r\n return this.http.delete(`/scripts/${name}`);\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport \"./import-jquery\";\r\nimport \"jquery-ui-bundle\";\r\nimport \"jquery-ui-bundle/jquery-ui.css\";\r\nimport \"./style.scss\";\r\nimport draw2d from \"draw2d\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport { Reader } from \"./reader\";\r\nimport { NodeAnswerList } from \"./shapes/node-answer-list\";\r\nimport { WithTranslation, withTranslation } from \"react-i18next\";\r\nimport { RouteComponentProps, withRouter } from \"react-router\";\r\nimport { TFunction } from \"i18next\";\r\nimport { ConnectionCreatePolicy } from \"./policies/connection-create-policy\";\r\nimport Topbar from \"./components/topbar\";\r\nimport { DecisionTreeEditorService } from \"../services/DecisionTreeEditorService\";\r\nimport { Schema } from \"../models/Schema\";\r\nimport Sidebar from \"./components/sidebar\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { Button } from \"primereact/components/button/Button\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { InputText } from \"primereact/inputtext\";\r\nimport { NodeAnswerBool } from \"./shapes/node-answer-bool\";\r\nimport { RadioButton } from \"primereact/radiobutton\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport { DecisionTreeService } from \"../../form/services/DecisionTreeService\";\r\nimport { NodeRange } from \"./shapes/node-range\";\r\nimport { NodeComputation } from \"./shapes/node-computation\";\r\nimport { NodeQuestionResult } from \"./shapes/node-question-result\";\r\nimport { MultiSelect } from \"primereact/multiselect\";\r\nimport { NodeResult } from \"./shapes/node-result\";\r\nimport { Checkbox } from \"primereact/checkbox\";\r\nimport { QuestionType } from \"../../form/enum/QuestionType\";\r\nimport { TriStateCheckbox } from \"primereact/tristatecheckbox\";\r\nimport { OperatorType } from \"../../form/enum/OperatorType\";\r\nimport { NodeMin } from \"./shapes/node-min\";\r\nimport { NodeMax } from \"./shapes/node-max\";\r\nimport { TransitionLHS } from \"./shapes/transition-lhs\";\r\nimport { TransitionRHS } from \"./shapes/transition-rhs\";\r\nimport { DataTable } from \"primereact/components/datatable/DataTable\";\r\nimport { Column } from \"primereact/components/column/Column\";\r\nimport { InputNumber } from \"primereact/inputnumber\";\r\nimport { NodeScript } from \"./shapes/node-script\";\r\nimport { Script } from \"../models/Script\";\r\nimport { AdminScriptsService } from \"../services/AdminScriptsService\";\r\nimport { NodeConcat } from \"./shapes/node-concat\";\r\nimport { Transition } from \"./shapes/transition\";\r\nimport { NodeMultipleAnswerList } from \"./shapes/node-multiple-answer-list\";\r\nimport { NODE_LIST } from \"./enums/shape\";\r\nimport { TransitionConcat } from \"./shapes/transition-concat\";\r\n\r\nconst draw2d2 = draw2d as any;\r\n\r\n\r\ndeclare var window: any;\r\n\r\nwindow.draw2d = draw2d;\r\nwindow.allNodes = [];\r\n\r\ninterface States {\r\n selectedShape: any;\r\n nodeType: string;\r\n selection: any;\r\n currentName: any;\r\n canvas: any;\r\n schema: Schema | null;\r\n showEditPanel: boolean;\r\n schemas: Schema[];\r\n showNewTreeDialog: boolean;\r\n refreshSchemasList: boolean;\r\n currentKey: any;\r\n changes: boolean;\r\n currentZoom: number;\r\n questionList: { type: string, name: string, label: string, values: string[] }[];\r\n questionListAnswerList: { type: string, name: string, label: string, values: string[] }[];\r\n questionListAnswerBool: { name: string, label: string, values: string[] }[];\r\n questionListResult: { name: string, label: string, values: string[] }[];\r\n decisionTreeList: string[];\r\n refreshScriptsState: boolean;\r\n scriptList: Script[];\r\n currentToolsName: string;\r\n}\r\n\r\ninterface Props extends WithTranslation, RouteComponentProps {\r\n}\r\n\r\nclass Canvas extends Component {\r\n\r\n\r\n static ZOOM_PERCENT = 10;\r\n zoomLevel: number;\r\n private toast: Toast | null;\r\n private canvas: any;\r\n private selection: any;\r\n private t: TFunction;\r\n private decisionTreeEditorService: DecisionTreeEditorService;\r\n private formService: FormService;\r\n private decisionTreeService: DecisionTreeService;\r\n private scriptService: AdminScriptsService;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.zoomLevel = 100;\r\n this.decisionTreeEditorService = new DecisionTreeEditorService();\r\n this.formService = new FormService();\r\n this.decisionTreeService = new DecisionTreeService();\r\n this.scriptService = new AdminScriptsService();\r\n this.state = {\r\n selectedShape: null,\r\n nodeType: '',\r\n selection: null,\r\n currentName: null,\r\n canvas: null,\r\n schema: null,\r\n showEditPanel: false,\r\n schemas: [],\r\n showNewTreeDialog: false,\r\n refreshSchemasList: false,\r\n currentKey: null,\r\n changes: false,\r\n currentZoom: 1.5,\r\n decisionTreeList: [],\r\n questionList: [],\r\n questionListAnswerList: [],\r\n questionListAnswerBool: [],\r\n questionListResult: [],\r\n refreshScriptsState: false,\r\n scriptList: [],\r\n currentToolsName: ''\r\n };\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this._getDatas();\r\n\r\n this._draw();\r\n\r\n }\r\n\r\n private _draw() {\r\n // setup canvas and toolbar\r\n this.canvas = new draw2d.Canvas(\"canvas\");\r\n\r\n this.setState({\r\n canvas: this.canvas\r\n });\r\n\r\n this._setupCanvas();\r\n this._setupOnDropAction();\r\n\r\n this.decisionTreeEditorService.findAll().then((res) => {\r\n if (res) {\r\n this.setState({\r\n schemas: res.data\r\n });\r\n }\r\n });\r\n\r\n };\r\n\r\n private _loadSchema(schema: Schema) {\r\n this.setState({\r\n schema\r\n });\r\n\r\n this.state.canvas.clear();\r\n\r\n this.decisionTreeEditorService.getOne(schema.key).then((res) => {\r\n console.clear();\r\n this.setState({\r\n schema: res.data\r\n });\r\n // unmarshal the JSON document into the canvas\r\n // (load)\r\n const reader = new Reader(this.canvas);\r\n if (res.data.json) {\r\n reader.loadJSONAndSchema(this.canvas, res.data.json);\r\n }\r\n\r\n for (const figure of this.canvas.getFigures().data) {\r\n this._updateFigureName(figure);\r\n\r\n }\r\n\r\n for (const line of this.canvas.getLines().data) {\r\n this._updateLineName(line);\r\n\r\n }\r\n\r\n this.setState({\r\n canvas: this.canvas\r\n }, () => {\r\n for (const figure of this.state.canvas.figures.data) {\r\n if (figure.userData.root) {\r\n figure.setBackgroundColor('#fcdb03');\r\n }\r\n if (figure.NAME === NODE_LIST.nodeAnswerList.name || figure.NAME === NODE_LIST.nodeAnswerBool.name) {\r\n for (const branche of figure.userData.branches) {\r\n for (const line of this.state.canvas.lines.data) {\r\n if (line.id === branche.connectionId) {\r\n switch (branche.answer) {\r\n case true:\r\n this._setLineLabel(line, 'true');\r\n break;\r\n case false:\r\n this._setLineLabel(line, 'false');\r\n break;\r\n case null:\r\n this._setLineLabel(line, 'null');\r\n break;\r\n default:\r\n this._setLineLabel(line, branche.answer);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (figure.NAME === NODE_LIST.nodeRange.name) {\r\n for (const branche of figure.userData.branches) {\r\n for (const line of this.state.canvas.lines.data) {\r\n if (line.id === branche.connectionId) {\r\n this._setLineLabel(line, `${branche.if.label} ${branche.than}`);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n\r\n this.state.canvas.setZoom(this.state.currentZoom, true);\r\n }\r\n\r\n private _setupCanvas() {\r\n // Show grid\r\n this.canvas.installEditPolicy(new draw2d.policy.canvas.ShowGridEditPolicy());\r\n\r\n this.canvas.installEditPolicy(new ConnectionCreatePolicy(), this.canvas);\r\n\r\n this.canvas.installEditPolicy(new draw2d.policy.canvas.FadeoutDecorationPolicy());\r\n\r\n this.canvas.setScrollArea('html');\r\n\r\n this.canvas.installEditPolicy(new draw2d.policy.canvas.WheelZoomPolicy());\r\n\r\n this.canvas.on('select', (e: any) => {\r\n if (e.getSelection().all.data.length === 1) {\r\n this.selection = e.getPrimarySelection();\r\n this.setState({\r\n showEditPanel: true\r\n });\r\n this.setState({\r\n selectedShape: this.selection,\r\n selection: this.selection\r\n });\r\n }\r\n else {\r\n this.setState({\r\n showEditPanel: false\r\n });\r\n }\r\n });\r\n\r\n this.canvas.on('unselect', () => {\r\n this.setState({\r\n showEditPanel: false\r\n });\r\n this.setState({\r\n selectedShape: null,\r\n currentName: null\r\n });\r\n });\r\n\r\n this.canvas.getCommandStack().addEventListener((e) => {\r\n if (e.action) {\r\n this.setState({\r\n changes: true\r\n });\r\n }\r\n if (e.action === \"POST_EXECUTE\" && e.command.label === \"Connect Ports\") {\r\n if (e.command.source.parent.NAME === 'node_answer_bool' && e.command.source.parent.userData.branches.length === 3) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: 'Maximum 3 links out of an answer_bool node!',\r\n });\r\n const command = new draw2d.command.CommandDelete(e.command.connection);\r\n this.state.canvas.getCommandStack().execute(command);\r\n }\r\n else if (e.command.source.parent.NAME === 'node_min' || e.command.source.parent.NAME === 'node_max') {\r\n e.command.source.parent.userData.nodes.push({\r\n nodeName: e.command.target.parent.userData.name,\r\n id: e.command.connection.id\r\n });\r\n }\r\n else {\r\n if (e.command.source.parent.userData.branches) {\r\n e.command.source.parent.userData.branches.push({\r\n nodeName: e.command.target.parent.userData.name,\r\n answer: e.command.source.parent.NAME === 'node_answer_bool' ? null : [],\r\n id: e.command.target.parent.id,\r\n connectionId: e.command.connection.id\r\n });\r\n }\r\n }\r\n }\r\n if (e.action === \"POST_EXECUTE\" && e.command.label === \"Delete Shape\" && e.command.figure?.sourcePort?.parent.NAME === \"node_answer_list\") {\r\n let i = 0;\r\n for (const branche of e.command.figure.sourcePort.parent.userData.branches) {\r\n if (branche.nodeName === e.command.figure.targetPort.parent.userData.name) {\r\n e.command.figure.sourcePort.parent.userData.branches.splice(i, 1);\r\n }\r\n i++;\r\n }\r\n }\r\n if (e.action === \"POST_EXECUTE\" && e.command.label === \"Delete Shape\" && (e.command.figure?.sourcePort?.parent.NAME === \"node_multiple_answer_list\" ||\r\n e.command.figure?.sourcePort?.parent.NAME === \"node_answer_bool\"\r\n )) {\r\n let i = 0;\r\n for (const branche of e.command.figure.sourcePort.parent.userData.branches) {\r\n if (branche.nodeName === e.command.figure.targetPort.parent.userData.name) {\r\n e.command.figure.sourcePort.parent.userData.branches.splice(i, 1);\r\n }\r\n i++;\r\n }\r\n }\r\n\r\n if (e.action === \"POST_EXECUTE\" && e.command.label === \"Delete Shape\" && e.command.connections?.data.length > 0) {\r\n for (const branche of e.command.connections.data) {\r\n let j = 0;\r\n let k = 0;\r\n if (branche.sourcePort.parent.userData.branches) {\r\n for (const brancheParent of branche.sourcePort.parent.userData.branches) {\r\n if (e.command.figure.id === brancheParent.id) {\r\n branche.sourcePort.parent.userData.branches.splice(j, 1);\r\n }\r\n j++;\r\n }\r\n }\r\n if (branche.sourcePort.parent.userData.nodes) {\r\n for (const brancheParent of branche.sourcePort.parent.userData.nodes) {\r\n if (branche.id === brancheParent.id) {\r\n branche.sourcePort.parent.userData.nodes.splice(k, 1);\r\n }\r\n k++;\r\n }\r\n }\r\n\r\n }\r\n }\r\n if (e.action === \"POST_EXECUTE\" && e.command.label === \"Delete Shape\" && (e.command.figure.NAME === \"Transition\" || e.command.figure.NAME === \"transition_concat\")) {\r\n let k = 0;\r\n if (e.command.figure.sourcePort.parent.userData.nodes) {\r\n for (const nodeParent of e.command.figure.sourcePort.parent.userData.nodes) {\r\n if (nodeParent.id === e.command.figure.id) {\r\n e.command.figure.sourcePort.parent.userData.nodes.splice(k, 1);\r\n }\r\n k++;\r\n }\r\n }\r\n }\r\n if (e.action === \"POST_EXECUTE\" && e.command.label === \"Connect Ports\" && e.command.connection?.NAME === \"Transition\") {\r\n if (e.command.connection && (e.command.connection.sourcePort?.parent?.NAME === \"node_max\" ||\r\n e.command.connection.sourcePort?.parent?.NAME === \"node_min\")) {\r\n e.command.connection.NAME = \"transition_concat\";\r\n // add bar decorator\r\n let bar = new draw2d2.decoration.connection.BarDecorator();\r\n bar.setDimension(50, 30);\r\n bar.setBackgroundColor('#e98b3a');\r\n e.command.connection.setSourceDecorator(bar);\r\n e.command.connection.setColor('#e98b3a');\r\n let bar2 = new draw2d2.decoration.connection.BarDecorator();\r\n bar2.setDimension(0, 0);\r\n e.command.connection.setTargetDecorator(bar2);\r\n }\r\n }\r\n if (e.action === \"POST_EXECUTE\" && e.command.label === \"Connect Ports\" && e.command.connection?.NAME === \"Transition\") {\r\n if (e.command.connection && (e.command.connection.sourcePort?.parent?.NAME === \"node_answer_bool\")) {\r\n // remove old table\r\n if (e.command.connection.tableInfo) {\r\n e.command.connection.remove(e.command.connection.tableInfo);\r\n }\r\n\r\n e.command.connection.tableInfo = new draw2d.shape.layout.TableLayout({\r\n stroke: 0,\r\n resizeable: true,\r\n bgColor: '#FFFFFF',\r\n });\r\n let header: any[] = [];\r\n\r\n header.push('null');\r\n\r\n e.command.connection.tableInfo.addRow(...header);\r\n e.command.connection.tableInfo.setPadding(0);\r\n\r\n e.command.connection.add(e.command.connection.tableInfo, new draw2d.layout.locator.PolylineMidpointLocator());\r\n }\r\n }\r\n });\r\n }\r\n\r\n private _getDatas() {\r\n\r\n this.formService.getQuestionsByType([]).then((res) => {\r\n if (res.data) {\r\n // @ts-ignore\r\n this.setState({\r\n // @ts-ignore\r\n questionList: res.data\r\n })\r\n }\r\n });\r\n\r\n this.decisionTreeService.getAllDecisionTrees().then((res) => {\r\n if (res.data) {\r\n // @ts-ignore\r\n this.setState({\r\n // @ts-ignore\r\n decisionTreeList: res.data\r\n })\r\n }\r\n });\r\n\r\n this.formService.getQuestionsByType(['bool']).then((res) => {\r\n if (res.data) {\r\n // @ts-ignore\r\n this.setState({\r\n // @ts-ignore\r\n questionListAnswerBool: res.data\r\n })\r\n }\r\n });\r\n\r\n this.formService.getQuestionsByType([]).then((res) => {\r\n if (res.data) {\r\n // @ts-ignore\r\n this.setState({\r\n // @ts-ignore\r\n questionListResult: res.data\r\n })\r\n }\r\n });\r\n\r\n this.scriptService.getMany().then((res) => {\r\n if (res.data) {\r\n this.setState({\r\n scriptList: res.data\r\n });\r\n }\r\n });\r\n }\r\n\r\n private _getQuestionsByType(type: string[]): { type: string, name: string, label: string, values: string[] }[] {\r\n let questions = [];\r\n for (const question of this.state.questionList) {\r\n if (type.length === 0) {\r\n // @ts-ignore\r\n questions.push(question);\r\n }\r\n if (type.includes(question.type)) {\r\n // @ts-ignore\r\n questions.push(question);\r\n }\r\n }\r\n return questions;\r\n }\r\n\r\n private _setupOnDropAction() {\r\n this.canvas.onDrop = (droppedDomNode, x, y) => {\r\n if (this.state.schema) {\r\n this.setState({\r\n changes: true\r\n });\r\n let isRoot = true;\r\n if (this.state.canvas.figures.data.length) {\r\n isRoot = false;\r\n }\r\n switch (droppedDomNode[0].dataset.shape) {\r\n case 'node':\r\n const node = new NodeAnswerList(x, y);\r\n this.state.canvas.add(node);\r\n break;\r\n case 'node_answer_bool':\r\n const node_answer_bool = new NodeAnswerBool(x, y);\r\n this.state.canvas.add(node_answer_bool);\r\n break;\r\n case 'node_answer_list':\r\n const node_answer_list = new NodeAnswerList(x, y);\r\n this.state.canvas.add(node_answer_list);\r\n break;\r\n case 'node_min':\r\n const node_min = new NodeMin(x, y);\r\n this.state.canvas.add(node_min);\r\n break;\r\n case 'node_max':\r\n const node_max = new NodeMax(x, y);\r\n this.state.canvas.add(node_max);\r\n break;\r\n case 'node_range':\r\n const node_range = new NodeRange(x, y);\r\n this.state.canvas.add(node_range);\r\n break;\r\n case 'node_computation':\r\n const node_computation = new NodeComputation(x, y);\r\n this.state.canvas.add(node_computation);\r\n break;\r\n case 'node_question_result':\r\n const node_question_result = new NodeQuestionResult(x, y);\r\n this.state.canvas.add(node_question_result);\r\n break;\r\n case 'node_result':\r\n const node_result = new NodeResult(x, y);\r\n this.state.canvas.add(node_result);\r\n break;\r\n case 'node_script':\r\n const node_script = new NodeScript(x, y);\r\n this.state.canvas.add(node_script);\r\n break;\r\n case 'node_concat':\r\n const node_concat = new NodeConcat(x, y);\r\n this.state.canvas.add(node_concat);\r\n break;\r\n case 'node_multiple_answer_list':\r\n const node_multiple_answer_list = new NodeMultipleAnswerList(x, y);\r\n this.state.canvas.add(node_multiple_answer_list);\r\n break;\r\n }\r\n if (isRoot) {\r\n const canvas = this.state.canvas;\r\n canvas.figures.data[0].userData['root'] = true;\r\n canvas.figures.data[0].setBackgroundColor('#fcdb03');\r\n this.setState({\r\n canvas\r\n });\r\n }\r\n }\r\n else {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: 'Select a schema first!',\r\n });\r\n }\r\n };\r\n }\r\n\r\n changeZoom(factor: number) {\r\n if (this.state.currentZoom + factor > 0.1 && this.state.currentZoom + factor < 5) {\r\n this.state.canvas.setZoom(this.state.currentZoom + factor, true);\r\n this.setState({\r\n currentZoom: this.state.currentZoom + factor\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Reset zoom to factor 1\r\n */\r\n resetZoom() {\r\n this.state.canvas.setZoom(1.5, true);\r\n this.setState({\r\n currentZoom: 1.5\r\n });\r\n }\r\n\r\n private _updateFigureName(figure: any, text ?: string) {\r\n const shape = this.canvas.getFigure(figure['id'].toString());\r\n figure.setLabel((figure.NAME === \"node_computation\" && shape.userData.operator) ? this._getComputationName(shape.userData.operator.name) : (text ?? shape.userData.name));\r\n //update branches name\r\n let canvas = this.state.canvas;\r\n for (const figure of canvas.figures.data) {\r\n if (figure.userData.branches) {\r\n for (const branche of figure.userData.branches) {\r\n if (branche.id === shape.id && branche.nodeName !== undefined && branche.nodeName !== text) {\r\n branche.nodeName = text ?? branche.nodeName;\r\n this.setState({\r\n canvas\r\n });\r\n }\r\n }\r\n }\r\n if (figure.userData.nodes) {\r\n for (const node of figure.userData.nodes) {\r\n if (node.id === shape.id && node.nodeName !== undefined && node.nodeName !== text) {\r\n node.nodeName = text ?? node.nodeName;\r\n this.setState({\r\n canvas\r\n });\r\n }\r\n }\r\n }\r\n if (figure.NAME === 'node_computation') {\r\n for (const figure of canvas.figures.data) {\r\n for (const [key] of Object.entries(figure.userData)) {\r\n if (figure.userData[key] && figure.userData[key].value?.id === shape.id) {\r\n figure.userData[key].value.name = shape.userData.name;\r\n figure.userData[key].value.label = shape.userData.name;\r\n this.setState({\r\n canvas\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _setLineLabel(line: any, label: string) {\r\n if (Array.isArray(label)) {\r\n if (label.length === 0) {\r\n return;\r\n }\r\n\r\n label = label.map(x => x.label).join(';');\r\n }\r\n\r\n // remove old table\r\n if (line.tableInfo) {\r\n line.remove(line.tableInfo);\r\n }\r\n\r\n line.tableInfo = new draw2d.shape.layout.TableLayout({\r\n stroke: 0,\r\n resizeable: true,\r\n bgColor: '#FFFFFF',\r\n });\r\n let header: any[] = [];\r\n header.push(label);\r\n line.tableInfo.addRow(...header);\r\n line.tableInfo.setPadding(0);\r\n\r\n line.add(line.tableInfo, new draw2d.layout.locator.PolylineMidpointLocator());\r\n }\r\n\r\n private _getComputationName(name: string) {\r\n switch (name) {\r\n case '-':\r\n return 'sub';\r\n case '+':\r\n return 'add';\r\n case '/':\r\n return 'div';\r\n case '*':\r\n return 'mult';\r\n }\r\n }\r\n\r\n private _updateLineName(line: any, text ?: string) {\r\n const transition = this.canvas.getLine(line['id'].toString());\r\n try {\r\n transition.setLabel(text ?? line.userData.name);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n\r\n private _getShapeText(shape: any): string {\r\n if (shape && shape.children.data.length > 0) {\r\n if (shape.children.data[0]?.figure.text) {\r\n return shape.children.data[0]?.figure.text;\r\n }\r\n else {\r\n return this._getShapeText(shape.children.data[0].figure);\r\n }\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n\r\n private _refreshSchemas(newSchemaName: string, key ?: string) {\r\n let schema;\r\n if (newSchemaName) {\r\n schema = {\r\n ...this.state.schema,\r\n name: newSchemaName\r\n };\r\n this.setState({\r\n schema\r\n });\r\n }\r\n else {\r\n this.state.canvas.clear();\r\n schema = null;\r\n }\r\n if (!key) {\r\n this.setState({\r\n schema: null\r\n });\r\n }\r\n this.setState({\r\n currentName: newSchemaName,\r\n currentKey: key,\r\n refreshSchemasList: !this.state.refreshSchemasList\r\n });\r\n }\r\n\r\n private _renderDialogFooter() {\r\n return (\r\n
    \r\n this.setState({ showNewTreeDialog: false })}\r\n style={{ backgroundColor: '#0087b7', borderColor: '#0087b7' }}\r\n className=\"p-button-danger\"\r\n />\r\n {\r\n this._createNewTree();\r\n }}\r\n className=\"p-button-danger\"\r\n style={{ backgroundColor: '#e98b3a', borderColor: '#e98b3a' }}\r\n />\r\n
    \r\n );\r\n }\r\n\r\n private _createNewTree() {\r\n const datas = {\r\n key: this.state.currentKey,\r\n name: this.state.currentName,\r\n };\r\n this.decisionTreeEditorService.createSchema(datas).then((res) => {\r\n if (res) {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: 'Decision tree successfully created !',\r\n });\r\n const schema = {\r\n key: res.data.key,\r\n name: res.data.name,\r\n json: res.data.json,\r\n };\r\n this.state.canvas.clear();\r\n this.setState({\r\n currentName: null,\r\n currentKey: null,\r\n schema,\r\n showNewTreeDialog: false,\r\n });\r\n this._refreshSchemas(this.state.currentName, this.state.currentKey);\r\n }\r\n })\r\n .catch((err) => {\r\n if (err.response) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: err.response.data.message,\r\n });\r\n }\r\n });\r\n }\r\n\r\n private _deleteShape() {\r\n const shape = this.state.canvas.getPrimarySelection();\r\n const command = new draw2d.command.CommandDelete(shape);\r\n this.state.canvas.getCommandStack().execute(command);\r\n }\r\n\r\n private _setSelectionUserDataValue(key: string, value: any) {\r\n let selection = this.state.selection;\r\n selection.userData[key] = value;\r\n this.setState({\r\n selection,\r\n changes: true\r\n });\r\n }\r\n\r\n private _getRootCheckboxContent() {\r\n return (\r\n
    \r\n {\r\n this._setSelectionUserDataValue('root', e.checked);\r\n this.state.selection.setBackgroundColor(e.checked ? '#fcdb03' : \"rgba(209, 209, 209,1)\");\r\n }}/>\r\n \r\n
    \r\n );\r\n }\r\n\r\n private _getQuestionDecisionTreeSelectContent(type: string[]) {\r\n return (\r\n
    \r\n
    \r\n {\r\n this._setSelectionUserDataValue('evaluatedElementRadio', e.value);\r\n }} checked={this.state.selection.userData.evaluatedElementRadio === 'question'}/>\r\n \r\n
    \r\n
    \r\n {\r\n this._setSelectionUserDataValue('evaluatedElementRadio', e.value);\r\n }} checked={this.state.selection.userData.evaluatedElementRadio === 'decision_tree'}/>\r\n \r\n
    \r\n
    \r\n {\r\n this._setSelectionUserDataValue('evaluatedElement', e.value);\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={(this.state.selection.userData.evaluatedElementRadio === 'decision_tree') ? \"Select a decision tree\" : \"Select a question\"}/>\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n private _getNodeAnswerListContent() {\r\n let content: any[] = [];\r\n\r\n content.push(\r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    Evaluated element:
    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n
    \r\n {\r\n //Reset branches value on change\r\n this.state.selection.userData.branches.forEach((branche) => {\r\n branche.answer = [];\r\n });\r\n this._setSelectionUserDataValue('evaluatedElementRadio', e.value);\r\n }} checked={this.state.selection.userData.evaluatedElementRadio === 'question'}/>\r\n \r\n
    \r\n
    \r\n {\r\n //Reset branches value on change\r\n this.state.selection.userData.branches.forEach((branche) => {\r\n branche.answer = [];\r\n });\r\n this._setSelectionUserDataValue('evaluatedElementRadio', e.value);\r\n }} checked={this.state.selection.userData.evaluatedElementRadio === 'decision_tree'}/>\r\n \r\n
    \r\n
    \r\n {\r\n //Reset branches value on change\r\n this.state.selection.userData.branches.forEach((branche) => {\r\n branche.answer = [];\r\n });\r\n this._setSelectionUserDataValue('evaluatedElementRadio', e.value);\r\n }} checked={this.state.selection.userData.evaluatedElementRadio === 'script'}/>\r\n \r\n
    \r\n
    );\r\n let placeHolder = '';\r\n let option: any = null;\r\n switch (this.state.selection.userData.evaluatedElementRadio) {\r\n case 'decision_tree':\r\n placeHolder = \"Select a decision tree\";\r\n option = this.state.decisionTreeList;\r\n break;\r\n case 'question':\r\n placeHolder = \"Select a question\";\r\n option = this._getQuestionsByType(['radio', 'dropdown', 'radio_image', 'matrix', 'bool']);\r\n break;\r\n case 'script':\r\n placeHolder = \"Select a script\";\r\n const scripts = [] as any;\r\n for (const script of this.state.scriptList) {\r\n scripts.push({ name: script.fileName, label: script.fileName });\r\n }\r\n option = scripts;\r\n break;\r\n\r\n }\r\n if (this.state.selection.userData.evaluatedElementRadio) {\r\n content.push(\r\n
    \r\n {\r\n //Reset branches value on change\r\n this.state.selection.userData.branches.forEach((branche) => {\r\n branche.answer = [];\r\n });\r\n this._setSelectionUserDataValue('evaluatedElement', e.value);\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={placeHolder}/>\r\n
    \r\n );\r\n }\r\n\r\n const tableBody: any[] = [];\r\n let values: any = [];\r\n\r\n for (const question of this._getQuestionsByType(['radio', 'dropdown', 'radio_image', 'matrix', 'bool'])) {\r\n if (question.name === this.state.selection.userData.evaluatedElement?.name) {\r\n if (question.type === QuestionType.BOOL) {\r\n values.push({ name: 'true', label: 'true' });\r\n values.push({ name: 'false', label: 'false' });\r\n values.push({ name: 'null', label: 'no_answer' });\r\n }\r\n else {\r\n for (const value of question.values) {\r\n values.push({ name: value, label: value });\r\n }\r\n values.push({ name: 'null', label: 'no_answer' });\r\n }\r\n }\r\n }\r\n for (const branche of this.state.selection.userData.branches) {\r\n const inputText = (\r\n {\r\n const selection = this.state.selection;\r\n for (const el of selection.userData.branches) {\r\n if (el.id === branche.id) {\r\n el.answer = e.target.value;\r\n }\r\n for (const line of this.state.canvas.lines.data) {\r\n if (line.id === branche.connectionId) {\r\n this._setLineLabel(line, e.target.value);\r\n }\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n );\r\n\r\n const inputTextScript = (\r\n {\r\n const selection = this.state.selection;\r\n for (const el of selection.userData.branches) {\r\n if (el.id === branche.id) {\r\n el.answer = e.target.value;\r\n }\r\n for (const line of this.state.canvas.lines.data) {\r\n if (line.id === branche.connectionId) {\r\n this._setLineLabel(line, e.target.value);\r\n }\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n );\r\n\r\n const multiSelect = (\r\n {\r\n const selection = this.state.selection;\r\n for (const el of selection.userData.branches) {\r\n if (el.id === branche.id) {\r\n el.answer = e.value;\r\n }\r\n for (const line of this.state.canvas.lines.data) {\r\n if (line.id === branche.connectionId) {\r\n const answers: string[] = [];\r\n e.value.forEach((x) => answers.push(x.label));\r\n this._setLineLabel(line, answers.join(';') ?? '');\r\n }\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n optionLabel=\"label\"\r\n placeholder=\"Select a value\"\r\n // @ts-ignore\r\n display=\"chip\"/>\r\n );\r\n\r\n tableBody.push(\r\n \r\n \r\n {\r\n this.state.selection.userData.evaluatedElementRadio === 'decision_tree' ? inputText :\r\n (this.state.selection.userData.evaluatedElementRadio === 'script' ? inputTextScript : multiSelect)\r\n }\r\n \r\n {branche.nodeName}\r\n \r\n );\r\n }\r\n\r\n if (this.state.selection.userData.evaluatedElementRadio === 'decision_tree') {\r\n content.push(

    Separate different element using \" ; \"

    );\r\n }\r\n\r\n content.push(\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {tableBody}\r\n \r\n
    ifto
    \r\n
    \r\n );\r\n\r\n return content;\r\n }\r\n\r\n private _getNodeMultipleAnswerListContent() {\r\n let content: any[] = [];\r\n\r\n content.push(\r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    Evaluated element:
    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n
    \r\n );\r\n content.push(\r\n
    \r\n \r\n {\r\n //Reset branches value on change\r\n this.state.selection.userData.branches.forEach((branche) => {\r\n branche.answer = [];\r\n });\r\n this._setSelectionUserDataValue('evaluatedElement', e.value);\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n appendTo={document.body}\r\n placeholder={\"Select a question\"}/>\r\n
    \r\n );\r\n\r\n const tableBody: any[] = [];\r\n let values: any = [];\r\n\r\n for (const question of this._getQuestionsByType(['checkbox'])) {\r\n if (question.name === this.state.selection.userData.evaluatedElement?.name) {\r\n for (const value of question.values) {\r\n values.push({ name: value, label: value });\r\n }\r\n values.push({ name: 'null', label: 'null' });\r\n }\r\n }\r\n const selection = this.state.selection;\r\n for (const branche of selection.userData.branches) {\r\n const operator = (\r\n {\r\n branche.operator = e.target.value;\r\n this.setState({\r\n selection\r\n });\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n appendTo={document.body}\r\n placeholder={\"Select a question\"}/>\r\n );\r\n const multiSelect = (\r\n {\r\n const selection = this.state.selection;\r\n for (const el of selection.userData.branches) {\r\n if (el.id === branche.id) {\r\n el.answer = e.value;\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n optionLabel=\"name\"\r\n placeholder=\"Select a value\"\r\n appendTo={document.body}\r\n // @ts-ignore\r\n display=\"chip\"/>\r\n );\r\n\r\n tableBody.push(\r\n \r\n {multiSelect}\r\n {operator}\r\n {branche.nodeName}\r\n \r\n );\r\n }\r\n\r\n if (this.state.selection.userData.evaluatedElementRadio === 'decision_tree') {\r\n content.push(

    Separate different element using \" ; \"

    );\r\n }\r\n\r\n content.push(\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {tableBody}\r\n \r\n
    ifOperatorto
    \r\n
    \r\n );\r\n\r\n return content;\r\n }\r\n\r\n private _getNodeAnswerBoolContent() {\r\n let content: any[] = [];\r\n\r\n content.push(\r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n {this._getQuestionDecisionTreeSelectContent(['checkbox'])}\r\n
    \r\n );\r\n const tableBody: any[] = [];\r\n for (const branche of this.state.selection.userData.branches) {\r\n\r\n const triStateCheckbox = (\r\n
    \r\n {\r\n const selection = this.state.selection;\r\n for (const el of selection.userData.branches) {\r\n if (el.id === branche.id) {\r\n el.answer = e.value;\r\n }\r\n for (const line of this.state.canvas.lines.data) {\r\n if (line.id === branche.connectionId) {\r\n switch (branche.answer) {\r\n case true:\r\n this._setLineLabel(line, 'true');\r\n break;\r\n case false:\r\n this._setLineLabel(line, 'false');\r\n break;\r\n default:\r\n this._setLineLabel(line, 'null');\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.setState({\r\n selection,\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n \r\n
    \r\n );\r\n\r\n tableBody.push(\r\n \r\n {branche.nodeName}\r\n \r\n {\r\n triStateCheckbox\r\n }\r\n \r\n \r\n );\r\n }\r\n\r\n if (this.state.selection.userData.branches.length > 0) {\r\n content.push(\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {tableBody}\r\n \r\n
    toisTrue
    \r\n
    \r\n );\r\n }\r\n\r\n return content;\r\n }\r\n\r\n private _getNodeResultContent() {\r\n let content: any[] = [];\r\n\r\n content.push(\r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.value.type = e.target.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n id=\"node-result-result\"\r\n appendTo={document.body}\r\n placeholder={\"Select a value\"}/>\r\n {this._getNodeResultContentByType()}\r\n
    \r\n );\r\n\r\n if (this.state.selection.userData.question) {\r\n let values: any[] = [];\r\n for (const value of this.state.selection.userData.question.values) {\r\n values.push({ name: value, label: value });\r\n }\r\n content.push(\r\n
    \r\n \r\n {\r\n this._setSelectionUserDataValue('value', e.value);\r\n }}\r\n id=\"node-result-result\"\r\n placeholder={\"Select a value\"}/>\r\n
    \r\n );\r\n }\r\n\r\n return content;\r\n }\r\n\r\n private _getNodeResultContentByType() {\r\n switch (this.state.selection.userData.value.type?.name) {\r\n case 'string':\r\n return (\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.value.value = e.target.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n
    \r\n );\r\n case 'number':\r\n return (\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.value.value = e.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n
    \r\n );\r\n case 'boolean':\r\n return (\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.value.value = e.target.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n id=\"node-result-result\"\r\n appendTo={document.body}\r\n placeholder={\"Select a value\"}/>\r\n
    \r\n );\r\n }\r\n }\r\n\r\n private _getNodeRangeContent() {\r\n\r\n let content: any[] = [];\r\n let nodes: any [] = [];\r\n\r\n for (const figure of this.state.canvas.figures.data) {\r\n if (figure.id === this.state.selection.id) {\r\n continue;\r\n }\r\n nodes.push({\r\n name: figure.userData.name,\r\n label: figure.userData.name,\r\n id: figure.id\r\n });\r\n }\r\n\r\n content.push(\r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    Evaluated element:
    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n
    \r\n {\r\n this._setSelectionUserDataValue('evaluatedElementRadio', e.value);\r\n }} checked={this.state.selection.userData.evaluatedElementRadio === 'question'}/>\r\n \r\n
    \r\n
    \r\n {\r\n this._setSelectionUserDataValue('evaluatedElementRadio', e.value);\r\n }} checked={this.state.selection.userData.evaluatedElementRadio === 'decision_tree'}/>\r\n \r\n
    \r\n
    \r\n {\r\n this._setSelectionUserDataValue('evaluatedElementRadio', e.value);\r\n }} checked={this.state.selection.userData.evaluatedElementRadio === 'script'}/>\r\n \r\n
    \r\n
    );\r\n let placeHolder = '';\r\n let option: any = null;\r\n switch (this.state.selection.userData.evaluatedElementRadio) {\r\n case 'decision_tree':\r\n placeHolder = \"Select a decision tree\";\r\n option = this.state.decisionTreeList;\r\n break;\r\n case 'question':\r\n placeHolder = \"Select a question\";\r\n option = this._getQuestionsByType(['number']);\r\n break;\r\n case 'script':\r\n placeHolder = \"Select a script\";\r\n const scripts = [] as any;\r\n for (const script of this.state.scriptList) {\r\n scripts.push({ name: script.fileName, label: script.fileName });\r\n }\r\n option = scripts;\r\n break;\r\n\r\n }\r\n\r\n if (this.state.selection.userData.evaluatedElementRadio) {\r\n content.push(\r\n
    \r\n {\r\n this._setSelectionUserDataValue('evaluatedElement', e.value);\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={placeHolder}/>\r\n
    \r\n );\r\n }\r\n content.push(\r\n
    \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.branches.push({ type: null, target: null, uuid: this._uuidv4() });\r\n this.setState({\r\n selection\r\n });\r\n }}\r\n className=\"p-button-secondary\"/>\r\n
    \r\n );\r\n\r\n const tableBody: any[] = [];\r\n const selection = this.state.selection;\r\n for (const branche of selection.userData.branches) {\r\n let conditions = [\r\n { name: OperatorType.NOT_EQUAL, label: '≠' },\r\n { name: OperatorType.EQUAL, label: '=' },\r\n { name: OperatorType.GREATER_THAN, label: '>' },\r\n { name: OperatorType.GREATER_THAN_OR_EQUAL_TO, label: '≥' },\r\n { name: OperatorType.LOWER_THAN_OR_EQUAL_TO, label: '≤' },\r\n { name: OperatorType.LOWER_THAN, label: '<' }\r\n ];\r\n const ifDropdown = (\r\n {\r\n const selection = this.state.selection;\r\n for (const el of selection.userData.branches) {\r\n if (el.id === branche.id) {\r\n el.if = e.value;\r\n }\r\n for (const line of this.state.canvas.lines.data) {\r\n if (line.id === branche.connectionId) {\r\n this._setLineLabel(line, `${e.value.label} ${branche.than ?? ''}`);\r\n }\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n appendTo={document.body}\r\n optionLabel=\"label\"\r\n placeholder=\"Select\"/>\r\n );\r\n\r\n const thanInputNumber = (\r\n {\r\n const selection = this.state.selection;\r\n for (const el of selection.userData.branches) {\r\n if (el.id === branche.id) {\r\n el.than = e.target.value;\r\n }\r\n for (const line of this.state.canvas.lines.data) {\r\n if (line.id === branche.connectionId) {\r\n this._setLineLabel(line, `${branche.if.label} ${e.target.value}`);\r\n }\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n );\r\n\r\n const nodeList = (\r\n
    \r\n {\r\n for (const port of selection.hybridPorts.data) {\r\n if (port.name === 'down') {\r\n for (const connection of port.connections.data) {\r\n if (connection.id === branche.id) {\r\n const command = new draw2d.command.CommandDelete(connection);\r\n this.state.canvas.getCommandStack().execute(command);\r\n }\r\n }\r\n }\r\n }\r\n\r\n branche.target = e.value;\r\n for (const figure of this.state.canvas.figures.data) {\r\n if (figure.id === e.value.id) {\r\n let nodeT = new Transition(selection, figure);\r\n this.state.canvas.add(nodeT);\r\n branche.id = nodeT.id;\r\n branche.connectionId = nodeT.id;\r\n for (const line of this.state.canvas.lines.data) {\r\n if (line.id === branche.connectionId) {\r\n this._setLineLabel(line, `${branche.if.label} ${branche.than}`);\r\n }\r\n }\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n appendTo={document.body}\r\n placeholder={\"Node\"}/>\r\n
    \r\n );\r\n\r\n tableBody.push(\r\n \r\n {ifDropdown}\r\n {thanInputNumber}\r\n {nodeList}\r\n \r\n {\r\n for (const port of selection.hybridPorts.data) {\r\n if (port.name === 'down') {\r\n for (const connection of port.connections.data) {\r\n if (connection.id === branche.id) {\r\n const command = new draw2d.command.CommandDelete(connection);\r\n this.state.canvas.getCommandStack().execute(command);\r\n }\r\n }\r\n }\r\n }\r\n for (const i in selection.userData.branches) {\r\n if (selection.userData.branches[i].uuid === branche.uuid) {\r\n selection.userData.branches.splice(i, 1);\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n content.push(\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {tableBody}\r\n \r\n
    ifthanto
    \r\n
    \r\n );\r\n\r\n return content;\r\n }\r\n\r\n private _getNodeQuestionResultContent() {\r\n let content: any[] = [];\r\n content.push(\r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n
    \r\n \r\n {\r\n this._setSelectionUserDataValue('question', e.value);\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a question\"}/>\r\n
    \r\n
    \r\n );\r\n\r\n return content;\r\n }\r\n\r\n private _getNodeScriptContent() {\r\n let content: any[] = [];\r\n const scripts = [] as any;\r\n for (const script of this.state.scriptList) {\r\n scripts.push({ name: script.fileName, label: script.fileName });\r\n }\r\n content.push(\r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n
    \r\n \r\n {\r\n this._setSelectionUserDataValue('script', e.value);\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a script\"}/>\r\n
    \r\n
    \r\n );\r\n\r\n return content;\r\n }\r\n\r\n private _uuidv4() {\r\n // @ts-ignore\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>\r\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n }\r\n\r\n private _getNodeConcatContent() {\r\n let content: any[] = [];\r\n let tableBody: any[] = [];\r\n let nodes: any [] = [];\r\n\r\n for (const figure of this.state.canvas.figures.data) {\r\n if (figure.id === this.state.selection.id) {\r\n continue;\r\n }\r\n nodes.push({\r\n name: figure.userData.name,\r\n label: figure.userData.name,\r\n id: figure.id\r\n });\r\n }\r\n\r\n\r\n let i = 0;\r\n const selection = this.state.selection;\r\n for (const value of selection.userData.values) {\r\n\r\n let contentValueType: any = null;\r\n\r\n switch (value?.type?.name) {\r\n case 'node':\r\n contentValueType = (\r\n
    \r\n {\r\n for (const port of selection.hybridPorts.data) {\r\n if (port.name === 'down') {\r\n for (const connection of port.connections.data) {\r\n if (connection.id === value.id) {\r\n const command = new draw2d.command.CommandDelete(connection);\r\n this.state.canvas.getCommandStack().execute(command);\r\n }\r\n }\r\n }\r\n }\r\n\r\n value.target = e.value;\r\n for (const figure of this.state.canvas.figures.data) {\r\n if (figure.id === e.value.id) {\r\n let nodeC = new TransitionConcat(selection, figure);\r\n this.state.canvas.add(nodeC);\r\n value.id = nodeC.id;\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n appendTo={document.body}\r\n placeholder={\"Node\"}/>\r\n
    \r\n );\r\n break;\r\n case 'question':\r\n contentValueType = (\r\n
    \r\n {\r\n value.target = e.target.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n appendTo={document.body}\r\n placeholder={\"Select a question\"}/>\r\n
    \r\n );\r\n break;\r\n case 'script':\r\n const scripts = [] as any;\r\n for (const script of this.state.scriptList) {\r\n scripts.push({ name: script.fileName, label: script.fileName });\r\n }\r\n contentValueType = (\r\n
    \r\n {\r\n value.target = e.target.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n appendTo={document.body}\r\n placeholder={\"Select a script\"}/>\r\n
    \r\n );\r\n }\r\n\r\n tableBody.push(\r\n \r\n \r\n
    \r\n {\r\n value.type = e.target.value;\r\n for (const port of selection.hybridPorts.data) {\r\n if (port.name === 'down') {\r\n for (const connection of port.connections.data) {\r\n if (connection.id === value.id) {\r\n const command = new draw2d.command.CommandDelete(connection);\r\n this.state.canvas.getCommandStack().execute(command);\r\n }\r\n }\r\n }\r\n }\r\n value.target = null;\r\n this.setState({\r\n selection\r\n });\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n appendTo={document.body}\r\n placeholder={\"Type\"}/>\r\n
    \r\n \r\n {contentValueType}\r\n \r\n {\r\n for (const port of selection.hybridPorts.data) {\r\n if (port.name === 'down') {\r\n for (const connection of port.connections.data) {\r\n if (connection.id === value.id) {\r\n const command = new draw2d.command.CommandDelete(connection);\r\n this.state.canvas.getCommandStack().execute(command);\r\n }\r\n }\r\n }\r\n }\r\n for (const i in selection.userData.values) {\r\n if (selection.userData.values[i].uuid === value.uuid) {\r\n selection.userData.values.splice(i, 1);\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n \r\n \r\n );\r\n i++;\r\n }\r\n\r\n content.push(\r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n
    \r\n {\r\n const selection = this.state.selection;\r\n let maxItt = 0;\r\n for (const value of this.state.selection.userData.values) {\r\n if (value.itt > maxItt) {\r\n maxItt = value.itt;\r\n }\r\n }\r\n selection.userData.values.push({ type: null, target: null, uuid: this._uuidv4() });\r\n this.setState({\r\n selection\r\n });\r\n }}\r\n className=\"p-button-secondary\"/>\r\n
    \r\n
    \r\n );\r\n\r\n content.push(\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {tableBody}\r\n \r\n
    TypeTarget
    \r\n
    \r\n );\r\n\r\n return content;\r\n }\r\n\r\n private _getNodeMinMaxContent() {\r\n let content: any[] = [];\r\n\r\n content.push(\r\n
    \r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n
    \r\n );\r\n\r\n content.push(\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n content.push(\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n const values = [];\r\n for (const decisionTree of this.state.decisionTreeList) {\r\n // @ts-ignore\r\n values.push({ name: decisionTree.name, label: decisionTree.name });\r\n }\r\n content.push(\r\n
    \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.decisionTrees = e.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n optionLabel=\"label\"\r\n placeholder=\"Decision_tree\"\r\n filter\r\n appendTo={document.body}\r\n />\r\n
    \r\n );\r\n\r\n content.push(\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n const scripts = [] as any;\r\n for (const script of this.state.scriptList) {\r\n scripts.push({ name: script.fileName, label: script.fileName });\r\n }\r\n content.push(\r\n
    \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.scripts = e.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n optionLabel=\"label\"\r\n placeholder=\"Script\"\r\n filter\r\n appendTo={document.body}\r\n />\r\n
    \r\n );\r\n\r\n return content;\r\n }\r\n\r\n private _getNodeComputationContent() {\r\n let content: any[] = [];\r\n\r\n let hsType = [\r\n { name: 'node', label: 'node' },\r\n { name: 'question', label: 'question' },\r\n { name: 'number', label: 'number' },\r\n { name: 'decision_tree', label: 'decision_tree' },\r\n { name: 'script', label: 'script' },\r\n ];\r\n let operators = [\r\n { name: '/', label: '/' },\r\n { name: '+', label: '+' },\r\n { name: '*', label: '*' },\r\n { name: '-', label: '-' },\r\n ];\r\n\r\n let nodes: any [] = [];\r\n\r\n for (const figure of this.state.canvas.figures.data) {\r\n if (figure.id === this.state.selection.id) {\r\n continue;\r\n }\r\n nodes.push({\r\n name: figure.userData.name,\r\n label: figure.userData.name,\r\n id: figure.id\r\n });\r\n }\r\n\r\n content.push(\r\n
    \r\n

    {this.state.selection?.NAME + ' configuration: ' ?? 'Configuration'}

    \r\n
    \r\n {this._getRootCheckboxContent()}\r\n
    \r\n

    Left member

    \r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.lhs.type = e.target.value;\r\n this._resetNodeConnectionCompute(selection, true, false);\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a question\"}/>\r\n
    \r\n
    \r\n );\r\n\r\n switch (this.state.selection.userData.lhs.type?.name) {\r\n case 'number':\r\n content.push(\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.lhs.value = parseInt(e.target.value);\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n
    \r\n );\r\n break;\r\n case 'question':\r\n content.push(\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.lhs.value = e.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n //this._setSelectionUserDataValue('question', e.value);\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a question\"}/>\r\n
    \r\n );\r\n break;\r\n case 'node':\r\n content.push(\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n\r\n this._resetNodeConnectionCompute(selection, true, false);\r\n\r\n selection.userData.lhs.value = e.value;\r\n\r\n for (const figure of this.state.canvas.figures.data) {\r\n if (figure.id === e.value.id) {\r\n let tLHS = new TransitionLHS(selection, figure);\r\n this.state.canvas.add(tLHS);\r\n selection.userData.lhs.id = tLHS.id;\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a node\"}/>\r\n
    \r\n );\r\n break;\r\n case 'decision_tree':\r\n content.push(\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.lhs.value = e.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a decision_tree\"}/>\r\n
    \r\n );\r\n break;\r\n case 'script':\r\n const scripts = [] as any;\r\n for (const script of this.state.scriptList) {\r\n scripts.push({ name: script.fileName, label: script.fileName });\r\n }\r\n content.push(\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.lhs.value = e.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a script\"}/>\r\n
    \r\n );\r\n break;\r\n }\r\n\r\n content.push(\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.operator = e.target.value;\r\n\r\n const shape = this.canvas.getFigure(selection.id.toString());\r\n selection.setLabel(this._getComputationName(e.target.value.name) ?? shape.userData.name);\r\n\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a question\"}/>\r\n
    \r\n );\r\n\r\n content.push(\r\n
    \r\n

    Right member

    \r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.rhs.type = e.target.value;\r\n this._resetNodeConnectionCompute(selection, false, true);\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a question\"}/>\r\n
    \r\n
    \r\n );\r\n\r\n switch (this.state.selection.userData.rhs.type?.name) {\r\n case 'number':\r\n content.push(\r\n {\r\n const selection = this.state.selection;\r\n selection.userData.rhs.value = parseInt(e.target.value);\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n />\r\n );\r\n break;\r\n case 'question':\r\n content.push(\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.rhs.value = e.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a question\"}/>\r\n
    \r\n );\r\n break;\r\n case 'node':\r\n content.push(\r\n
    \r\n \r\n {\r\n\r\n const selection = this.state.selection;\r\n\r\n this._resetNodeConnectionCompute(selection, false, true);\r\n\r\n selection.userData.rhs.value = e.value;\r\n\r\n for (const figure of this.state.canvas.figures.data) {\r\n if (figure.id === e.value.id) {\r\n let tRHS = new TransitionRHS(selection, figure);\r\n this.state.canvas.add(tRHS);\r\n selection.userData.rhs.id = tRHS.id;\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a node\"}/>\r\n
    \r\n );\r\n break;\r\n case 'decision_tree':\r\n content.push(\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.rhs.value = e.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a decision_tree\"}/>\r\n
    \r\n );\r\n break;\r\n case 'script':\r\n const scripts = [] as any;\r\n for (const script of this.state.scriptList) {\r\n scripts.push({ name: script.fileName, label: script.fileName });\r\n }\r\n content.push(\r\n
    \r\n \r\n {\r\n const selection = this.state.selection;\r\n selection.userData.rhs.value = e.value;\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }}\r\n filter\r\n optionLabel=\"name\"\r\n placeholder={\"Select a script\"}/>\r\n
    \r\n );\r\n break;\r\n }\r\n\r\n return content;\r\n }\r\n\r\n private _resetNodeConnectionCompute(selection: any, lhs: boolean, rhs: boolean) {\r\n for (const port of selection.hybridPorts.data) {\r\n if (port.name === 'down') {\r\n for (const connection of port.connections.data) {\r\n if (lhs) {\r\n if (connection.NAME === 'lhs') {\r\n const command = new draw2d.command.CommandDelete(connection);\r\n this.state.canvas.getCommandStack().execute(command);\r\n selection.userData.lhs.value = null;\r\n }\r\n }\r\n if (rhs) {\r\n if (connection.NAME === 'rhs') {\r\n const command = new draw2d.command.CommandDelete(connection);\r\n this.state.canvas.getCommandStack().execute(command);\r\n selection.userData.rhs.value = null;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this.setState({\r\n selection\r\n }, () => this.setState({\r\n changes: true\r\n }));\r\n }\r\n\r\n private _getConfigurationContent() {\r\n if (this.state.selection) {\r\n switch (this.state.selection.NAME) {\r\n case 'node_answer_list' :\r\n return this._getNodeAnswerListContent();\r\n case 'node_answer_bool' :\r\n return this._getNodeAnswerBoolContent();\r\n case 'node_result' :\r\n return this._getNodeResultContent();\r\n case 'node_range' :\r\n return this._getNodeRangeContent();\r\n case 'node_question_result' :\r\n return this._getNodeQuestionResultContent();\r\n case 'node_min' :\r\n return this._getNodeMinMaxContent();\r\n case 'node_max' :\r\n return this._getNodeMinMaxContent();\r\n case 'node_computation' :\r\n return (
    {this._getNodeComputationContent()}
    );\r\n case 'node_script' :\r\n return this._getNodeScriptContent();\r\n case 'node_concat' :\r\n return this._getNodeConcatContent();\r\n case 'node_multiple_answer_list' :\r\n return this._getNodeMultipleAnswerListContent();\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n let editPanel;\r\n\r\n if (this.state.showEditPanel) {\r\n editPanel = (\r\n
    \r\n
    \r\n

    Node edition

    \r\n
    {\r\n this._deleteShape();\r\n }}>\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n this.setState({\r\n changes: true\r\n });\r\n const sel = this.state.selection;\r\n sel.userData.name = e.target.value;\r\n if (sel.NAME === 'Transition') {\r\n const line = this.canvas.getLine(sel.id.toString());\r\n this._updateLineName(line, e.target.value);\r\n this.setState({\r\n selection: sel,\r\n currentName: e.target.value\r\n });\r\n }\r\n else {\r\n const shape = this.canvas.getFigure(sel.id.toString());\r\n this._updateFigureName(shape, e.target.value);\r\n this.setState({\r\n selection: sel,\r\n currentName: e.target.value\r\n });\r\n }\r\n }}\r\n />\r\n {\r\n this.state.selection?.NAME === NODE_LIST.nodeRange.name ||\r\n this.state.selection?.NAME === NODE_LIST.nodeConcat.name ||\r\n this.state.selection?.NAME === NODE_LIST.nodeComputation.name\r\n ?\r\n (\r\n
    \r\n

    \r\n Links from this type of node can be created only from this panel and not directly in the diagram.\r\n

    \r\n
    \r\n ) : null\r\n }\r\n
    \r\n
    \r\n {this._getConfigurationContent()}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n
    \r\n (this.toast = el)}/>\r\n
    \r\n
    \r\n this.setState({ changes })}\r\n refreshSchemas={(newSchemaName: string, key: string) => {\r\n this._refreshSchemas(newSchemaName, key);\r\n }}\r\n hideSidebar={() => {\r\n let element = document.getElementsByClassName('sideBar') as any;\r\n if (element) {\r\n element[0].style.zIndex = 1;\r\n }\r\n }}\r\n resetSidebar={() => {\r\n let element = document.getElementsByClassName('sideBar') as any;\r\n if (element) {\r\n element[0].style.zIndex = 998;\r\n }\r\n }}\r\n currenToolsName={this.state.currentToolsName}\r\n setCurrentToolsName={currentToolsName => this.setState({ currentToolsName })}\r\n canvas={this.state.canvas}\r\n changeSchemaName={(name) => {\r\n const schema = this.state.schema as any;\r\n if (schema) {\r\n schema.name = name;\r\n this.setState({\r\n changes: true,\r\n schema\r\n });\r\n }\r\n }}\r\n refreshSchemasList={() => {\r\n this.setState({\r\n refreshSchemasList: true\r\n }, () => {\r\n this.setState({\r\n refreshSchemasList: false\r\n });\r\n });\r\n }}\r\n lockSelect={(lockSelect: boolean) => {\r\n if (lockSelect) {\r\n this.state.canvas.installEditPolicy(new draw2d.policy.canvas.ReadOnlySelectionPolicy());\r\n }\r\n else {\r\n this.state.canvas.uninstallEditPolicy(new draw2d.policy.canvas.ReadOnlySelectionPolicy());\r\n this.state.canvas.installEditPolicy(new draw2d.policy.canvas.BoundingboxSelectionPolicy());\r\n }\r\n }}\r\n />\r\n
    \r\n
    \r\n this.setState({ changes })}\r\n refreshSchemas={this.state.refreshSchemasList}\r\n resetRefreshSchemas={() => this.setState({ refreshSchemasList: false })}\r\n changes={this.state.changes}\r\n onClick={(schema: Schema) => {\r\n this._loadSchema(schema);\r\n window.scroll(0, 0);\r\n }}\r\n newTree={() => {\r\n this.setState({\r\n showNewTreeDialog: true\r\n });\r\n }}\r\n currentSchemaName={this.state.currentName}\r\n currentKeyName={this.state.currentKey}\r\n resetChanges={() => this.setState({ changes: false })}\r\n setCurrentToolsName={(currentToolsName) => this.setState({\r\n currentToolsName\r\n })}\r\n />\r\n
    \r\n\r\n
    \r\n {editPanel}\r\n\r\n {\r\n this.setState({\r\n showNewTreeDialog: false\r\n });\r\n }}\r\n >\r\n
    \r\n
    \r\n \r\n {\r\n this.setState({\r\n currentName: e.target.value\r\n });\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n this.setState({\r\n currentKey: e.target.value\r\n });\r\n }}\r\n />\r\n *This element cannot be changed.\r\n
    \r\n\r\n
    \r\n \r\n\r\n\r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(withRouter(Canvas));\r\n","export class ScriptDTO {\r\n\r\n constructor(\r\n readonly fileName: string,\r\n readonly script: string\r\n ) {\r\n }\r\n }","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport { TFunction } from \"i18next\";\r\nimport { FormService } from \"../../../../form/services/FormService\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport \"../CodeSidebar.scss\";\r\nimport { Button } from \"primereact/components/button/Button\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { DataTable } from \"primereact/components/datatable/DataTable\";\r\nimport { Column } from \"primereact/components/column/Column\";\r\nimport { Script } from \"../../../models/Script\";\r\nimport { AdminScriptsService } from \"../../../services/AdminScriptsService\";\r\nimport { AxiosResponse } from \"axios\";\r\nimport { FileUtils } from \"../../../../shared/utils/FileUtils\";\r\nimport { SeverityEnum } from \"../../../../shared/enum/SeverityEnum\";\r\nimport { Toolbar } from \"primereact/toolbar\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { InputText } from \"primereact/inputtext\";\r\n\r\ninterface States {\r\n scripts: Script[];\r\n isScriptsRefreshing: boolean;\r\n displayConfirmation: boolean;\r\n toDelete: string | null;\r\n loading: boolean;\r\n selectedScript: any;\r\n displayNewScriptConfirmation: boolean;\r\n menuFilter: string;\r\n\r\n}\r\n\r\ninterface Props extends WithTranslation {\r\n scriptToViewCallback: any;\r\n deletedScript: any;\r\n reloadScripts: boolean;\r\n resetRefreshScriptsState: any;\r\n actionDeleteScript: boolean;\r\n actionDownloadScript: boolean;\r\n}\r\n\r\nclass CodeSidebarJS extends React.Component {\r\n\r\n private t: TFunction;\r\n private formService: FormService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private readonly scriptService: AdminScriptsService;\r\n private scripts: any = [];\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.scriptService = new AdminScriptsService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n\r\n this.state = {\r\n scripts: [],\r\n isScriptsRefreshing: false,\r\n displayConfirmation: false,\r\n toDelete: null,\r\n loading: false,\r\n selectedScript: null,\r\n displayNewScriptConfirmation: false,\r\n menuFilter: '',\r\n };\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.getScripts();\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any) {\r\n if (nextProps.reloadScripts) {\r\n this.setState({\r\n isScriptsRefreshing: true\r\n });\r\n this.getScripts();\r\n }\r\n if (nextProps.actionDeleteScript) {\r\n if (!this.state.selectedScript) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please select a script !`,\r\n });\r\n return;\r\n }\r\n this.setState({ displayConfirmation: true, toDelete: this.state.selectedScript.fileName });\r\n }\r\n if (nextProps.actionDownloadScript) {\r\n this.handleDownload();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload() {\r\n\r\n if (!this.state.selectedScript) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please select a script !`,\r\n });\r\n return;\r\n }\r\n\r\n this.scriptService\r\n .downloadOne(this.state.selectedScript.fileName)\r\n .then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n\r\n this.scriptService\r\n .uploadMany(e.files)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n /* detail: this.formService.t(this.t, \"ui_admin_script_upload_toast_success\", false), */\r\n detail: `Success - File uploaded`,\r\n });\r\n this.fileUpload?.clear();\r\n this.getScripts();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `File NOT uploaded : ${message}`,\r\n /* detail: `${this.formService.t(this.t, \"ui_admin_script_upload_toast_error\", false)} : ${message}`, */\r\n });\r\n });\r\n\r\n }\r\n\r\n /**\r\n * New script\r\n */\r\n handleNewScript() {\r\n this.setState({ displayNewScriptConfirmation: false });\r\n this.resetEditorText();\r\n }\r\n\r\n /**\r\n * Delete script\r\n */\r\n handleDelete() {\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n\r\n this.scriptService.deleteOne(this.state.toDelete).then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_script_delete_toast_success\"),\r\n });\r\n this.setState({ displayConfirmation: false, toDelete: null, selectedScript: null });\r\n this.getScripts();\r\n this.resetEditorText();\r\n });\r\n }\r\n\r\n\r\n resetEditorText() {\r\n this.props.deletedScript();\r\n }\r\n\r\n /**\r\n * Load scripts\r\n */\r\n getScripts() {\r\n this.scriptService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.scripts = response.data;\r\n this.setState({ scripts: response.data });\r\n });\r\n }\r\n\r\n actionBodyTemplate() {\r\n return (\r\n \r\n \r\n this.setState({ displayNewScriptConfirmation: true })\r\n //this.props.scriptToViewCallback(this.state.selectedScript.fileName);\r\n\r\n }\r\n />\r\n (this.fileUpload = el)}\r\n accept=\".js\"\r\n customUpload={true}\r\n /* multiple={true} */\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n auto\r\n // emptyTemplate={() =>

    {this.t(\"ui_admin_html_upload_content\")}

    }\r\n />\r\n\r\n
    \r\n );\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
    \r\n this.setState({ displayConfirmation: false })}\r\n className=\"p-button-danger\"\r\n />\r\n this.handleDelete()}\r\n autoFocus\r\n />\r\n
    \r\n );\r\n }\r\n\r\n /*\r\n Validate methods\r\n */\r\n validationWindowForNewScript() {\r\n return (\r\n
    \r\n this.setState({ displayNewScriptConfirmation: false })}\r\n style={{ backgroundColor: '#0087b7', borderColor: '#0087b7' }}\r\n className=\"p-button-danger\"\r\n />\r\n this.handleNewScript()}\r\n autoFocus\r\n className=\"p-button-danger\"\r\n style={{ backgroundColor: '#e98b3a', borderColor: '#e98b3a' }}\r\n />\r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n this.toast = el}/>\r\n {\r\n this.setState({\r\n menuFilter: e.target.value\r\n });\r\n if (e.target.value) {\r\n const scripts = this.scripts;\r\n const scriptsFiltered: any = [];\r\n for (const script of scripts) {\r\n if (script.fileName.includes(e.target.value)) {\r\n scriptsFiltered.push(script);\r\n }\r\n }\r\n this.setState({\r\n scripts: scriptsFiltered\r\n });\r\n }\r\n else {\r\n this.setState({\r\n scripts: this.scripts\r\n });\r\n }\r\n }}\r\n />\r\n this.setState({ selectedScript: e.value }, () => {\r\n this.props.scriptToViewCallback(this.state.selectedScript.fileName);\r\n })}\r\n dataKey=\"fileName\"\r\n stateStorage=\"local\"\r\n selectionMode=\"single\"\r\n >\r\n \r\n\r\n \r\n \r\n this.actionBodyTemplate()\r\n }\r\n />\r\n this.setState({ displayConfirmation: false })}\r\n >\r\n
    \r\n \r\n Are you sure you want to proceed?\r\n
    \r\n \r\n\r\n\r\n
    \r\n this.setState({ displayNewScriptConfirmation: false })}\r\n >\r\n
    \r\n \r\n Are you sure you want to create a new script?\r\n\r\n
    \r\n \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(CodeSidebarJS);\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport {Dropdown} from \"primereact/dropdown\";\r\n\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { FormService } from \"../../../../form/services/FormService\";\r\n\r\nimport \"./QuestionSelectorJS.scss\"\r\nimport { DataTable } from \"primereact/datatable\";\r\nimport { Column } from \"primereact/column\";\r\n\r\n\r\ninterface Props extends WithTranslation {\r\n questionSelected: any;\r\n}\r\n\r\ninterface States {\r\n questionListAnswerList: { name: string, label: string, values: string[] }[];\r\n selection: any;\r\n changes: boolean;\r\n\r\n}\r\n\r\n\r\nclass QuestionSelectorJS extends React.Component {\r\n\r\n\r\n private toast: Toast | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n \r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.formService = new FormService(); \r\n this.state = {\r\n selection: null,\r\n questionListAnswerList: [],\r\n changes: false,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this._getDatas(); \r\n }\r\n\r\n private _setSelectionUserDataValue(value: string) {\r\n this.setState({\r\n selection: value,\r\n changes: true\r\n }, ()=>{\r\n this.props.questionSelected(this.state.selection.name);\r\n })\r\n }\r\n\r\n private _getDatas() {\r\n this.formService.getQuestionsByType([]).then((res) => {\r\n if (res.data) {\r\n // @ts-ignore\r\n this.setState({\r\n // @ts-ignore\r\n questionListAnswerList: res.data\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n\r\n {\r\n this._setSelectionUserDataValue(e.value);\r\n }}\r\n dataKey=\"name\"\r\n stateStorage=\"local\"\r\n selectionMode=\"single\"\r\n >\r\n \r\n \r\n
    \r\n );\r\n }\r\n\r\n}\r\nexport default withTranslation()(QuestionSelectorJS);\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\n\r\nimport Editor from \"@monaco-editor/react\";\r\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\r\n\r\nimport { AdminScriptsService } from \"../services/AdminScriptsService\";\r\nimport { ScriptDTO } from \"../dto/ScriptDTO\";\r\n\r\nimport CodeSidebarJS from \"./components/JS/CodeSidebarJS\";\r\nimport QuestionSelectorJS from \"./components/JS/QuestionSelectorJS\";\r\nimport \"./CodeEditor.scss\";\r\nimport { Toolbar } from \"primereact/toolbar\";\r\nimport { InputText } from \"primereact/inputtext\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n displayConfirmation: boolean;\r\n displayNewScriptConfirmation: boolean;\r\n editorText: string;\r\n editorScriptName: string;\r\n refreshScriptsState: boolean;\r\n editorRef: React.MutableRefObject;\r\n deleteScript: boolean;\r\n downloadScript: boolean;\r\n}\r\n\r\n\r\nclass CodeEditorJS extends React.Component {\r\n\r\n\r\n private toast: Toast | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n private readonly scriptService: AdminScriptsService;\r\n private readonly scriptDefaultScript: string;\r\n\r\n private leftContents: any;\r\n private rightContents: any;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.formService = new FormService();\r\n\r\n // Languages\r\n this.scriptService = new AdminScriptsService();\r\n this.scriptDefaultScript =\r\n '//Script structure :\\n\\n'\r\n + '/*\\nvar answer = responses.get(\"\");'\r\n /* +'\\n\\nanswer.foreach((value)=>{\\n\\tvalue+=1;\\n})' */\r\n + '\\n\\ndata.result.push(answer); ou data.result = answer;\\n*/\\n\\n';\r\n\r\n this.state = {\r\n displayConfirmation: false,\r\n editorText: \"\",\r\n editorScriptName: \"\",\r\n displayNewScriptConfirmation: false,\r\n refreshScriptsState: false,\r\n editorRef: React.createRef(),\r\n deleteScript: false,\r\n downloadScript: false,\r\n };\r\n this.handleEditorChange = this.handleEditorChange.bind(this);\r\n this.resetEditorText = this.resetEditorText.bind(this);\r\n this.handleOneUpload = this.handleOneUpload.bind(this);\r\n this.handleEditorDidMount = this.handleEditorDidMount.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n /* this.editorRef.current?.editor?.layout();\r\n if (autofocus) {\r\n this.editorRef.current?.editor?.focus();\r\n } */\r\n }\r\n\r\n private refreshScript = (scriptToView) => {\r\n\r\n this.setState(\r\n {\r\n editorScriptName: scriptToView\r\n }\r\n );\r\n\r\n this.getScriptToViewText(scriptToView);\r\n };\r\n\r\n\r\n // Languages\r\n getScriptToViewText(str: string) {\r\n if (!str || !str.includes(\".js\")) {\r\n return;\r\n }\r\n this.scriptService\r\n .getOne(str)\r\n .then((response: AxiosResponse) => {\r\n\r\n this.setState({ editorText: response.data, editorScriptName: str });\r\n });\r\n }\r\n\r\n\r\n /**\r\n * On upload for one script\r\n */\r\n handleOneUpload() {\r\n\r\n let fileName = this.state.editorScriptName;\r\n\r\n if (!fileName) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please enter a script name !`,\r\n });\r\n return;\r\n }\r\n\r\n let extensionPart = fileName.substring(fileName.lastIndexOf('.'));\r\n\r\n const allowedTypes = ['.js'];\r\n\r\n // = Validate the types\r\n if (!allowedTypes.includes(extensionPart)) {\r\n fileName += \".js\";\r\n }\r\n\r\n const dto = new ScriptDTO(fileName, this.state.editorText);\r\n\r\n this.scriptService\r\n .uploadOne(dto)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: 'Script sauvegardé !',\r\n });\r\n\r\n this.setState({ refreshScriptsState: true });\r\n\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Une erreur est survenue lors de la sauvegarde du script: ${message}`,\r\n });\r\n });\r\n }\r\n\r\n\r\n resetEditorText() {\r\n\r\n this.setState({\r\n editorText: this.scriptDefaultScript,\r\n displayNewScriptConfirmation: false,\r\n editorScriptName: \"\"\r\n });\r\n\r\n }\r\n\r\n\r\n /* \r\n Actions handeling\r\n */\r\n handleEditorChange(value, event) {\r\n\r\n this.setState({ editorText: value });\r\n\r\n }\r\n\r\n /* \r\n Validate methods\r\n */\r\n validationWindowForNewScript() {\r\n return (\r\n
    \r\n this.setState({ displayNewScriptConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.resetEditorText()}\r\n autoFocus\r\n />\r\n
    \r\n );\r\n }\r\n\r\n\r\n handleDeletedScript = () => {\r\n\r\n this.resetEditorText();\r\n\r\n };\r\n\r\n\r\n handleEditorDidMount(editor, monaco) {\r\n\r\n this.state.editorRef.current = editor;\r\n\r\n }\r\n\r\n selectQuestion = (questionSelected) => {\r\n\r\n this.state.editorRef.current?.trigger('keyboard', 'type', { text: 'var answer = responses.get(\"' + questionSelected + '\");' });\r\n\r\n };\r\n\r\n render() {\r\n\r\n this.leftContents = (\r\n \r\n

    Script editor

    \r\n
    \r\n this.setState({ editorScriptName: e.currentTarget.value })}\r\n\r\n placeholder=\"Script name\"\r\n style={{ width: '20rem' }}\r\n />\r\n
    \r\n
    \r\n );\r\n this.rightContents = (\r\n
    \r\n this.setState({\r\n downloadScript: true,\r\n }, () => {\r\n this.setState({\r\n downloadScript: false\r\n });\r\n })}\r\n />\r\n \r\n this.setState({\r\n deleteScript: true,\r\n }, () => {\r\n this.setState({\r\n deleteScript: false\r\n });\r\n })}\r\n />\r\n
    \r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n this.setState({ refreshScriptsState: false })}\r\n deletedScript={this.handleDeletedScript}\r\n actionDeleteScript={this.state.deleteScript}\r\n actionDownloadScript={this.state.downloadScript}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n (this.toast = el)}/>\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withTranslation()(CodeEditorJS);\r\n","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport { HtmlDTO } from '../dto/HtmlDTO';\r\nimport {Html} from \"../models/HTML\";\r\n\r\nexport class AdminHtmlsService extends APIService {\r\n\r\n /**\r\n * Get many htmls\r\n */\r\n getMany(): Promise> {\r\n return this.http.get('/htmls');\r\n }\r\n\r\n /**\r\n * Get the text of a html by name\r\n */\r\n getOne(name: string): Promise> {\r\n return this.http.get(`/htmls/${name}/text`);\r\n }\r\n\r\n /**\r\n * Get the text of a html by name\r\n */\r\n getOneIsActive(name: string): Promise> {\r\n return this.http.get(`/htmls/${name}/isActive`);\r\n }\r\n \r\n /**\r\n * Download a html by name\r\n */\r\n downloadOne(name: string) {\r\n return this.http.get(`/htmls/${name}/download`, { responseType: 'blob' });\r\n }\r\n \r\n \r\n /**\r\n * Upload many htmls\r\n */\r\n uploadMany(files: File[]) {\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append('files', file);\r\n }\r\n return this.http.post(`/htmls/upload`, formData);\r\n }\r\n\r\n /**\r\n * Upload one html\r\n */\r\n uploadOne(dto: HtmlDTO) {\r\n return this.http.post(`/htmls/uploadone`, dto);\r\n } \r\n\r\n /**\r\n * Delete one html\r\n */\r\n deleteOne(name: string) {\r\n return this.http.delete(`/htmls/${name}`);\r\n }\r\n\r\n activeOne(editorScriptName: string, isActive: boolean) {\r\n return this.http.post(`/htmls/${editorScriptName}/activeOne/${isActive}`);\r\n }\r\n}\r\n","export class HtmlDTO {\r\n\r\n constructor(\r\n readonly fileName: string,\r\n readonly html: string\r\n ) {\r\n }\r\n }","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport { TFunction } from \"i18next\";\r\nimport { FormService } from \"../../../../form/services/FormService\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport \"../CodeSidebar.scss\";\r\nimport { Button } from \"primereact/components/button/Button\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { DataTable } from \"primereact/components/datatable/DataTable\";\r\nimport { Column } from \"primereact/components/column/Column\";\r\n\r\nimport { AxiosResponse } from \"axios\";\r\nimport { FileUtils } from \"../../../../shared/utils/FileUtils\";\r\nimport { SeverityEnum } from \"../../../../shared/enum/SeverityEnum\";\r\nimport { Toolbar } from \"primereact/toolbar\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Html } from \"../../../models/HTML\";\r\nimport { AdminHtmlsService } from \"../../../services/AdminHTMLService\";\r\nimport { InputText } from \"primereact/inputtext\";\r\nimport { Message } from \"primereact/message\";\r\n\r\ninterface States {\r\n htmls: Html[];\r\n isScriptsRefreshing: boolean;\r\n displayConfirmation: boolean;\r\n toDelete: string | null;\r\n loading: boolean;\r\n selectedScript: any;\r\n displayNewScriptConfirmation: boolean;\r\n menuFilter: string;\r\n}\r\n\r\ninterface Props extends WithTranslation {\r\n scriptToViewCallback: any;\r\n deletedScript: any;\r\n reloadScripts: boolean;\r\n resetRefreshScriptsState: any;\r\n actionDeleteHtml: boolean;\r\n actionDownloadHtml: boolean;\r\n}\r\n\r\nclass CodeSidebarHTML extends React.Component {\r\n\r\n private t: TFunction;\r\n private formService: FormService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private readonly htmlService: AdminHtmlsService;\r\n private scripts: any = [];\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.htmlService = new AdminHtmlsService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n\r\n this.state = {\r\n htmls: [],\r\n isScriptsRefreshing: false,\r\n displayConfirmation: false,\r\n toDelete: null,\r\n loading: false,\r\n selectedScript: null,\r\n displayNewScriptConfirmation: false,\r\n menuFilter: '',\r\n };\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.getHtmls();\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any) {\r\n if (nextProps.reloadScripts) {\r\n this.setState({\r\n isScriptsRefreshing: true\r\n });\r\n this.getHtmls();\r\n\r\n this.props.resetRefreshScriptsState();\r\n }\r\n if (nextProps.actionDownloadHtml) {\r\n this.handleDownload();\r\n }\r\n if (nextProps.actionDeleteHtml) {\r\n if (!this.state.selectedScript) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please select a script !`,\r\n });\r\n return;\r\n }\r\n else {\r\n this.setState({ displayConfirmation: true, toDelete: this.state.selectedScript.fileName });\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload() {\r\n\r\n if (!this.state.selectedScript) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please select a script !`,\r\n });\r\n return;\r\n }\r\n\r\n this.htmlService\r\n .downloadOne(this.state.selectedScript.fileName)\r\n .then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n\r\n this.htmlService\r\n .uploadMany(e.files)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n /* detail: this.formService.t(this.t, \"ui_admin_html_upload_toast_success\", false), */\r\n detail: `Success - File uploaded`,\r\n });\r\n this.fileUpload?.clear();\r\n this.getHtmls();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `File NOT uploaded : ${message}`,\r\n /* detail: `${this.formService.t(this.t, \"ui_admin_html_upload_toast_error\", false)} : ${message}`, */\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * New script\r\n */\r\n handleNewScript() {\r\n this.setState({ displayNewScriptConfirmation: false });\r\n this.resetEditorText();\r\n }\r\n\r\n /**\r\n * Delete script\r\n */\r\n handleDelete() {\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n this.htmlService.deleteOne(this.state.toDelete).then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.t(\"ui_admin_html_delete_toast_success\"),\r\n });\r\n this.setState({ displayConfirmation: false, toDelete: null, selectedScript: null });\r\n this.getHtmls();\r\n this.resetEditorText();\r\n });\r\n }\r\n\r\n\r\n resetEditorText() {\r\n this.props.deletedScript();\r\n }\r\n\r\n /**\r\n * Load html\r\n */\r\n getHtmls() {\r\n this.htmlService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.scripts = response.data;\r\n this.setState({ htmls: response.data });\r\n });\r\n }\r\n\r\n actionBodyTemplate() {\r\n return (\r\n \r\n \r\n this.setState({ displayNewScriptConfirmation: true })\r\n //this.props.scriptToViewCallback(this.state.selectedScript.fileName);\r\n\r\n }\r\n />\r\n (this.fileUpload = el)}\r\n accept=\".html\"\r\n customUpload={true}\r\n /* multiple={true} */\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n auto\r\n // emptyTemplate={() =>

    {this.t(\"ui_admin_html_upload_content\")}

    }\r\n />\r\n
    \r\n );\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
    \r\n this.setState({ displayConfirmation: false })}\r\n style={{ backgroundColor: '#0087b7', borderColor: '#0087b7' }}\r\n className=\"p-button-danger\"\r\n />\r\n this.handleDelete()}\r\n autoFocus\r\n />\r\n
    \r\n );\r\n }\r\n\r\n /*\r\n Validate methods\r\n */\r\n validationWindowForNewScript() {\r\n return (\r\n
    \r\n this.setState({ displayNewScriptConfirmation: false })}\r\n style={{ backgroundColor: '#0087b7', borderColor: '#0087b7' }}\r\n className=\"p-button-danger\"\r\n />\r\n this.handleNewScript()}\r\n autoFocus\r\n className=\"p-button-danger\"\r\n style={{ backgroundColor: '#e98b3a', borderColor: '#e98b3a' }}\r\n />\r\n
    \r\n );\r\n }\r\n\r\n private _rowClass(data) {\r\n return {\r\n 'row-active': data.isActive === true\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n this.toast = el}/>\r\n {\r\n this.setState({\r\n menuFilter: e.target.value\r\n });\r\n if (e.target.value) {\r\n const scripts = this.scripts;\r\n const scriptsFiltered: any = [];\r\n for (const script of scripts) {\r\n if (script.fileName.includes(e.target.value)) {\r\n scriptsFiltered.push(script);\r\n }\r\n }\r\n this.setState({\r\n htmls: scriptsFiltered\r\n });\r\n }\r\n else {\r\n this.setState({\r\n htmls: this.scripts\r\n });\r\n }\r\n }}\r\n />\r\n this.setState({ selectedScript: e.value }, () => {\r\n this.props.scriptToViewCallback(this.state.selectedScript.fileName);\r\n })}\r\n dataKey=\"fileName\"\r\n stateStorage=\"local\"\r\n selectionMode=\"single\"\r\n rowClassName={this._rowClass}\r\n >\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n this.actionBodyTemplate()\r\n }\r\n />\r\n this.setState({ displayConfirmation: false })}\r\n >\r\n
    \r\n \r\n Are you sure you want to proceed?\r\n
    \r\n \r\n\r\n\r\n
    \r\n this.setState({ displayNewScriptConfirmation: false })}\r\n >\r\n
    \r\n \r\n Are you sure you want to create a new script?\r\n\r\n
    \r\n \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(CodeSidebarHTML);\r\n","import { AxiosResponse } from 'axios';\r\nimport { APIService } from '../../shared/services/APIService';\r\nimport { Requirements } from '../models/Requirements';\r\nexport class RequirementsService extends APIService {\r\n\r\n\r\n /**\r\n * Get many requirements\r\n * \r\n * @role Admin\r\n */\r\n getMany(): Promise> {\r\n return this.http.get('/forms/default/requirements');\r\n }\r\n\r\n /**\r\n * Upload and replace the requirements\r\n *\r\n * @role Admin\r\n */\r\n uploadRequirements(file: File) {\r\n const formData = new FormData();\r\n formData.append('requirements', file);\r\n return this.http.put('/forms/default/requirements/upload', formData);\r\n }\r\n\r\n /**\r\n * Download the current requirements\r\n *\r\n * @role Admin\r\n */\r\n downloadRequirements() {\r\n return this.http.get('/forms/default/requirements/download', { responseType: 'blob' });\r\n }\r\n\r\n activeOne(editorRequirementName: string, isActive: boolean) {\r\n return this.http.post(`/forms/default/requirements/${editorRequirementName}/activeOne/${isActive}`);\r\n }\r\n}\r\n","\r\nimport { AxiosResponse } from \"axios\";\r\nimport { WithTranslation, withTranslation, } from \"react-i18next\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport {Dropdown} from \"primereact/dropdown\";\r\nimport React from \"react\";\r\nimport { FormService } from \"../../../../form/services/FormService\";\r\n\r\nimport \"./QuestionSelectorHTML.scss\"\r\nimport {TranslationService} from '../../../../form/services/TranslationService'\r\nimport {RequirementsService} from '../../../services/RequirementsService'\r\nimport { Requirements } from \"../../../models/Requirements\";\r\n\r\n\r\n\r\ninterface Props extends WithTranslation {\r\n questionSelected: any;\r\n questionValueSelected: any;\r\n requirementSelected: any;\r\n requirementAnswerSelected: any;\r\n prismicKeySelected: any;\r\n imagePrismicKeySelected: any;\r\n}\r\n\r\ninterface States {\r\n questionListAnswerList: { name: string, label: string, values: string[] }[];\r\n selectionQuestion: any;\r\n selectionQuestionValue: any;\r\n changes: boolean;\r\n prismicKeys: { name: string}[];\r\n selectionPrismic: any;\r\n requirements: Requirements[];\r\n selectionRequirement: any;\r\n selectionRequirementAnswer: any;\r\n\r\n}\r\n\r\n\r\nclass QuestionSelectorHTML extends React.Component {\r\n\r\n\r\n private toast: Toast | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n private translationService: TranslationService;\r\n private requirementService: RequirementsService;\r\n\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.formService = new FormService();\r\n this.translationService = new TranslationService();\r\n this.requirementService = new RequirementsService();\r\n\r\n this.state = {\r\n selectionQuestion: null,\r\n selectionQuestionValue: null,\r\n questionListAnswerList: [],\r\n changes: false,\r\n prismicKeys: [],\r\n selectionPrismic: null,\r\n requirements: [],\r\n selectionRequirement: null,\r\n selectionRequirementAnswer: null,\r\n }\r\n\r\n \r\n }\r\n\r\n\r\n componentDidMount() {\r\n\r\n this._getQuestions();\r\n this.getRequirements();\r\n this.getPrismicKeys();\r\n }\r\n \r\n\r\n private _getConfigurationContent() {\r\n if (this.state.questionListAnswerList) {\r\n return this._getNodeAnswerListContent();\r\n }\r\n }\r\n private _setSelectionUserDataValue(selector: number, value: string) {\r\n \r\n if(selector===1){\r\n\r\n this.setState({\r\n selectionQuestion: value,\r\n changes: true\r\n }, ()=>{\r\n this.props.questionSelected(this.state.selectionQuestion);\r\n /* this.props.questionSelected(this.state.selectionQuestion.name); */\r\n });\r\n }\r\n else if(selector===2){\r\n this.setState({\r\n selectionQuestionValue: value,\r\n changes: true\r\n }, ()=>{\r\n this.props.questionValueSelected(this.state.selectionQuestionValue);\r\n });\r\n }\r\n else if(selector==3){\r\n this.setState({\r\n selectionRequirement: value,\r\n changes: true\r\n }, ()=>{\r\n this.props.requirementSelected(this.state.selectionRequirement);\r\n });\r\n }\r\n else if(selector===4){\r\n this.setState({\r\n selectionRequirementAnswer: value,\r\n changes: true\r\n }, ()=>{\r\n this.props.requirementAnswerSelected(this.state.selectionRequirementAnswer);\r\n });\r\n }\r\n else if(selector==5){\r\n this.setState({\r\n selectionPrismic: value,\r\n changes: true\r\n }, ()=>{\r\n this.props.prismicKeySelected(this.state.selectionPrismic.name);\r\n });\r\n }\r\n\r\n else if(selector==6){\r\n this.setState({\r\n selectionPrismic: value,\r\n changes: true\r\n }, ()=>{\r\n this.props.imagePrismicKeySelected(this.state.selectionPrismic.name);\r\n });\r\n }\r\n\r\n }\r\n\r\n private _getNodeAnswerListContent() {\r\n let content: any[] = [];\r\n\r\n content.push(

    Available tags

    )\r\n\r\n content.push(\r\n \r\n

    {\"Questions\"}

    \r\n
    \r\n {\"Question\"}\r\n {\r\n this._setSelectionUserDataValue(1, e.value);\r\n }}\r\n optionLabel=\"name\" \r\n filter \r\n filterBy=\"name\" \r\n placeholder=\"Select a question\"\r\n />\r\n {\"Answer\"}\r\n {\r\n this._setSelectionUserDataValue(2, e.value);\r\n }} \r\n optionLabel=\"name\" \r\n filter \r\n filterBy=\"name\" \r\n placeholder=\"Select a question\"\r\n />\r\n
    \r\n\r\n\r\n

    {\"Requirements\"}

    \r\n
    \r\n {\"Title\"}\r\n {\r\n this._setSelectionUserDataValue(3, e.value);\r\n }}\r\n optionLabel=\"requirement\"\r\n filter \r\n filterBy=\"requirement\"\r\n placeholder={\"Select a requirement\"}\r\n />\r\n {\"Answer\"}\r\n {\r\n this._setSelectionUserDataValue(4, e.value);\r\n }}\r\n optionLabel=\"requirement\"\r\n filter \r\n filterBy=\"requirement\"\r\n placeholder={\"Select a requirement\"}\r\n />\r\n
    \r\n\r\n

    {\"Prismic keys\"}

    \r\n
    \r\n {\"Key\"}\r\n {\r\n this._setSelectionUserDataValue(5, e.value);\r\n }}\r\n optionLabel=\"name\"\r\n filter \r\n filterBy=\"name\"\r\n placeholder={\"Select a prismic key\"}\r\n /> \r\n
    \r\n\r\n

    {\"Images (Prismic keys)\"}

    \r\n
    \r\n {\"Key\"}\r\n {\r\n this._setSelectionUserDataValue(6, e.value);\r\n }}\r\n optionLabel=\"name\"\r\n filter\r\n filterBy=\"name\"\r\n placeholder={\"Select a prismic key\"}\r\n />\r\n
    \r\n\r\n
    \r\n )\r\n\r\n\r\n return content;\r\n }\r\n\r\n\r\n private _getQuestions() {\r\n this.formService.getQuestionsByType([]).then((res) => {\r\n if (res.data) {\r\n // @ts-ignore\r\n this.setState({\r\n // @ts-ignore\r\n questionListAnswerList: res.data\r\n }/* ,()=>{\r\n console.log(this.state.questionListAnswerList);\r\n } */);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Load requirements\r\n */\r\n private getRequirements() {\r\n this.requirementService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.setState({ requirements: response.data }/* ,()=>{\r\n console.log(this.state.requirements[0].requirements);\r\n } */);\r\n });\r\n } \r\n\r\n /**\r\n * Load prismic keys\r\n */\r\n private async getPrismicKeys() {\r\n await this.translationService.get('fr')\r\n .then((response) => { return response; })\r\n .then((data) => {\r\n \r\n let transformObj = [{name : ''}];\r\n \r\n for (let i=0; i{\r\n console.log(this.state.prismicKeys);\r\n } */);\r\n \r\n });\r\n } \r\n\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n {this._getConfigurationContent()}\r\n
    \r\n );\r\n }\r\n\r\n}\r\nexport default withTranslation()(QuestionSelectorHTML);\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\n\r\nimport Editor from \"@monaco-editor/react\";\r\nimport * as monaco from 'monaco-editor/esm/vs/editor/editor.api';\r\n\r\nimport { AdminHtmlsService } from \"../services/AdminHTMLService\";\r\nimport { HtmlDTO } from \"../dto/HtmlDTO\";\r\n\r\nimport CodeSidebarHTML from \"./components/HTML/CodeSidebarHTML\";\r\nimport QuestionSelectorHTML from \"./components/HTML/QuestionSelectorHTML\";\r\n\r\nimport \"./CodeEditor.scss\";\r\nimport { Checkbox } from \"primereact/checkbox\";\r\nimport { Toolbar } from \"primereact/toolbar\";\r\nimport { InputText } from \"primereact/inputtext\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n displayConfirmation: boolean;\r\n displayNewScriptConfirmation: boolean;\r\n editorText: string;\r\n editorScriptName: string;\r\n refreshScriptsState: boolean;\r\n editorRef: React.MutableRefObject;\r\n isActive: boolean;\r\n deleteHtml: boolean;\r\n downloadHtml: boolean;\r\n}\r\n\r\n\r\nclass CodeEditorHTML extends React.Component {\r\n\r\n\r\n private toast: Toast | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n private readonly htmlService: AdminHtmlsService;\r\n private readonly htmlDefaultScript: string;\r\n\r\n private leftContents: any;\r\n private rightContents: any;\r\n\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.formService = new FormService();\r\n\r\n // Languages\r\n this.htmlService = new AdminHtmlsService();\r\n this.htmlDefaultScript =\r\n \"\\n\\n\\n\\n\"\r\n /* +\"\" */\r\n ;\r\n\r\n this.state = {\r\n displayConfirmation: false,\r\n editorText: \"\",\r\n editorScriptName: \"\",\r\n displayNewScriptConfirmation: false,\r\n refreshScriptsState: false,\r\n editorRef: React.createRef(),\r\n isActive: false,\r\n deleteHtml: false,\r\n downloadHtml: false,\r\n };\r\n this.handleEditorChange = this.handleEditorChange.bind(this);\r\n this.resetEditorText = this.resetEditorText.bind(this);\r\n this.handleOneUpload = this.handleOneUpload.bind(this);\r\n this.handleEditorDidMount = this.handleEditorDidMount.bind(this);\r\n\r\n }\r\n\r\n public componentDidMount(): void {\r\n /* this.editorRef.current?.editor?.layout();\r\n if (autofocus) {\r\n this.editorRef.current?.editor?.focus();\r\n } */\r\n }\r\n\r\n\r\n refreshScript = (scriptToView) => {\r\n\r\n this.setState(\r\n {\r\n editorScriptName: scriptToView\r\n }\r\n );\r\n\r\n this.getHtmlToViewText(scriptToView);\r\n\r\n };\r\n\r\n getHtmlToViewText(str: string) {\r\n if (!str || !str.includes(\".html\")) {\r\n return;\r\n }\r\n\r\n this.htmlService\r\n .getOne(str)\r\n .then((response: AxiosResponse) => {\r\n this.setState({ editorText: response.data, editorScriptName: str });\r\n\r\n });\r\n\r\n this.htmlService.getOneIsActive(str).then((res: any) => {\r\n if (res) {\r\n this.setState({\r\n isActive: res.data\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * On upload for one script\r\n */\r\n handleOneUpload() {\r\n\r\n let fileName = this.state.editorScriptName;\r\n\r\n if (!fileName) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please enter a script name !`,\r\n });\r\n return;\r\n }\r\n\r\n let extensionPart = fileName.substring(fileName.lastIndexOf('.'));\r\n\r\n const allowedTypes = ['.html'];\r\n\r\n // = Validate the types\r\n if (!allowedTypes.includes(extensionPart)) {\r\n fileName += \".html\";\r\n }\r\n\r\n const dto = new HtmlDTO(fileName, this.state.editorText);\r\n\r\n this.htmlService\r\n .uploadOne(dto)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: this.formService.t(this.t, \"ui_admin_html_upload_one_toast_success\", false),\r\n });\r\n this.resetEditorText();\r\n this.setState({ refreshScriptsState: true });\r\n\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `${this.formService.t(this.t, \"ui_admin_html_upload_one_toast_error\", false)} : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n\r\n resetEditorText() {\r\n this.setState({\r\n editorText: this.htmlDefaultScript,\r\n displayNewScriptConfirmation: false,\r\n editorScriptName: \"\"\r\n });\r\n }\r\n\r\n\r\n /* \r\n Actions handeling\r\n */\r\n handleEditorChange(value, event) {\r\n\r\n this.setState({ editorText: value });\r\n\r\n }\r\n\r\n /* \r\n Validate methods\r\n */\r\n validationWindowForNewScript() {\r\n return (\r\n
    \r\n this.setState({ displayNewScriptConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.resetEditorText()}\r\n autoFocus\r\n />\r\n
    \r\n );\r\n }\r\n\r\n\r\n handleDeletedScript = () => {\r\n this.resetEditorText();\r\n };\r\n\r\n\r\n handleEditorDidMount(editor, monaco) {\r\n\r\n this.state.editorRef.current = editor;\r\n\r\n }\r\n\r\n selectQuestion = (questionSelected) => {\r\n this.state.editorRef.current?.trigger('keyboard', 'type'\r\n , {\r\n text:\r\n '{{question.' + questionSelected.name + '}}\\n\\n'\r\n });\r\n };\r\n\r\n selectQuestionValue = (questionValueSelected) => {\r\n this.state.editorRef.current?.trigger('keyboard', 'type'\r\n , {\r\n text:\r\n '{{value.' + questionValueSelected.name + '}}\\n\\n'\r\n });\r\n };\r\n\r\n\r\n selectRequirement = (requirementSelected) => {\r\n this.state.editorRef.current?.trigger('keyboard', 'type'\r\n , {\r\n text:\r\n '{{requirement.title.' + requirementSelected.requirementTitle + '}}\\n\\n'\r\n });\r\n };\r\n\r\n selectRequirementAnswer = (requirementAnswerSelected) => {\r\n this.state.editorRef.current?.trigger('keyboard', 'type'\r\n , {\r\n text:\r\n '{{requirement.answer.' + requirementAnswerSelected.answer.target + '}}\\n\\n'\r\n });\r\n };\r\n\r\n selectPrismicKey = (prismicKeySelected) => {\r\n this.state.editorRef.current?.trigger('keyboard', 'type'\r\n , {\r\n text:\r\n '{{translation.' + prismicKeySelected + '}}\\n'\r\n });\r\n };\r\n\r\n selectImagePrismicKey = (prismicKeySelected) => {\r\n this.state.editorRef.current?.trigger('keyboard', 'type'\r\n , {\r\n text:\r\n ''\r\n });\r\n };\r\n\r\n render() {\r\n\r\n this.leftContents = (\r\n \r\n

    HTML template editor

    \r\n
    \r\n
    \r\n this.setState({ editorScriptName: e.currentTarget.value })}\r\n\r\n placeholder=\"Template name\"\r\n style={{ width: '15rem' }}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n if (!this.state.editorScriptName) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please select one template !`,\r\n });\r\n return;\r\n }\r\n this.htmlService.activeOne(this.state.editorScriptName, e.checked).then(res => {\r\n if (res.status === 201) {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: `Le changement a bien été effectué !`,\r\n });\r\n this.setState({ isActive: e.checked, refreshScriptsState: true });\r\n }\r\n });\r\n }}/>\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n this.rightContents = (\r\n
    \r\n this.setState({\r\n downloadHtml: true,\r\n }, () => {\r\n this.setState({\r\n downloadHtml: false\r\n });\r\n })}\r\n />\r\n \r\n this.setState({\r\n deleteHtml: true,\r\n }, () => {\r\n this.setState({\r\n deleteHtml: false\r\n });\r\n })}\r\n />\r\n
    \r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n this.setState({ refreshScriptsState: false })}\r\n deletedScript={this.handleDeletedScript}\r\n actionDeleteHtml={this.state.deleteHtml}\r\n actionDownloadHtml={this.state.downloadHtml}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n (this.toast = el)}/>\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withTranslation()(CodeEditorHTML);\r\n","import {Requirement} from './Requirement'\r\nexport class Requirements {\r\n\r\n constructor(\r\n readonly form: string,\r\n readonly requirements: Requirement[], \r\n ) {\r\n }\r\n}","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport { TFunction } from \"i18next\";\r\nimport { FormService } from \"../../../form/services/FormService\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport \"./RequirementSidebar.scss\";\r\nimport { Button } from \"primereact/components/button/Button\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { DataTable } from \"primereact/components/datatable/DataTable\";\r\nimport { Column } from \"primereact/components/column/Column\";\r\nimport { RichText } from \"prismic-reactjs\";\r\n\r\nimport { AxiosResponse } from \"axios\";\r\nimport { FileUtils } from \"../../../shared/utils/FileUtils\";\r\nimport { SeverityEnum } from \"../../../shared/enum/SeverityEnum\";\r\nimport { Toolbar } from \"primereact/toolbar\";\r\nimport { FileUpload } from \"primereact/fileupload\";\r\nimport { Requirement } from \"../../models/Requirement\";\r\nimport { RequirementsService } from \"../../services/RequirementsService\";\r\nimport { Requirements } from \"../../models/Requirements\";\r\n\r\n\r\ninterface States {\r\n requirements: Requirement[];\r\n isRequirementsRefreshing: boolean;\r\n displayConfirmation: boolean;\r\n toDelete: string | null;\r\n loading: boolean;\r\n selectedRequirement: any;\r\n displayNewRequirementConfirmation: boolean;\r\n}\r\n\r\ninterface Props extends WithTranslation {\r\n requirementToViewCallback: any;\r\n deletedRequirement: any;\r\n reloadRequirements: boolean;\r\n resetRefreshRequirementsState: any;\r\n deleteRequirementAction: boolean;\r\n resetDeleteRequirementAction: () => void;\r\n actionDownloadRequirement: boolean;\r\n setCurrentRequirement: (currentRequirement) => void;\r\n}\r\n\r\nclass RequirementSidebar extends React.Component {\r\n\r\n private t: TFunction;\r\n private formService: FormService;\r\n private toast: Toast | null;\r\n private fileUpload: FileUpload | null;\r\n private readonly requirementService: RequirementsService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.requirementService = new RequirementsService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.fileUpload = null;\r\n\r\n this.state = {\r\n requirements: [],\r\n isRequirementsRefreshing: false,\r\n displayConfirmation: false,\r\n toDelete: null,\r\n loading: false,\r\n selectedRequirement: null,\r\n displayNewRequirementConfirmation: false,\r\n };\r\n }\r\n\r\n\r\n componentDidMount() {\r\n this.getRequirements();\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any) {\r\n if (nextProps.reloadRequirements) {\r\n this.setState({\r\n isRequirementsRefreshing: true\r\n }, () => {\r\n this.props.resetRefreshRequirementsState();\r\n });\r\n this.getRequirements();\r\n }\r\n if (nextProps.deleteRequirementAction) {\r\n this.setState({ displayConfirmation: true, toDelete: this.state.selectedRequirement.requirement });\r\n }\r\n if (nextProps.actionDownloadRequirement) {\r\n this.handleDownload();\r\n }\r\n }\r\n\r\n\r\n /**\r\n * On download\r\n */\r\n handleDownload() {\r\n\r\n this.requirementService.downloadRequirements().then((response: AxiosResponse) => {\r\n FileUtils.downloadFile(response);\r\n });\r\n }\r\n\r\n /**\r\n * On upload\r\n */\r\n handleUpload(e: { files: File[] }) {\r\n if (!e.files) {\r\n return;\r\n }\r\n\r\n this.requirementService\r\n .uploadRequirements(e.files[0])\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: `Success - Form updated`,\r\n });\r\n this.fileUpload?.clear();\r\n this.getRequirements();\r\n this.resetEditor();\r\n\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Error - Form NOT updated : ${message}`,\r\n });\r\n this.fileUpload?.clear();\r\n });\r\n }\r\n\r\n /**\r\n * New script\r\n */\r\n handleNewScript() {\r\n this.setState({ displayNewRequirementConfirmation: false, selectedRequirement: null });\r\n this.resetEditor();\r\n }\r\n\r\n /**\r\n * Delete script\r\n */\r\n handleDelete() {\r\n\r\n if (!this.state.toDelete) {\r\n return;\r\n }\r\n let requirements = [...this.state.requirements];\r\n /* let requirementsProperty = [...requirements[0].requirements]; */\r\n\r\n\r\n requirements = requirements.filter((obj) => {\r\n return obj.requirement !== this.state.toDelete;\r\n\r\n });\r\n\r\n this.setState({ requirements }, () => {\r\n this.handleUploadObject();\r\n });\r\n this.props.resetDeleteRequirementAction();\r\n this.setState({ displayConfirmation: false, toDelete: null, selectedRequirement: null });\r\n }\r\n\r\n handleUploadObject() {\r\n const dtoRequi = new Requirements(\r\n 'default',\r\n this.state.requirements\r\n );\r\n\r\n const jsonString = JSON.stringify(dtoRequi);\r\n let f = new File([jsonString], \"data.json\", { type: \"application/json\" });\r\n\r\n this.requirementService\r\n .uploadRequirements(f)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: `Success - Form updated`,\r\n });\r\n this.fileUpload?.clear();\r\n this.getRequirements();\r\n this.resetEditor();\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Error - Form NOT updated : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n\r\n resetEditor() {\r\n this.props.deletedRequirement();\r\n }\r\n\r\n /**\r\n * Load requirement\r\n */\r\n getRequirements() {\r\n this.requirementService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n this.setState({ requirements: response.data[0].requirements });\r\n });\r\n }\r\n\r\n actionBodyTemplate() {\r\n return (\r\n \r\n \r\n this.setState({ displayNewRequirementConfirmation: true })\r\n //this.props.scriptToViewCallback(this.state.selectedRequirement.fileName);\r\n\r\n }\r\n />\r\n (this.fileUpload = el)}\r\n accept=\".json\"\r\n customUpload={true}\r\n /* multiple={true} */\r\n uploadHandler={(e: { files: File[] }) => this.handleUpload(e)}\r\n auto\r\n // emptyTemplate={() =>

    {this.t(\"ui_admin_html_upload_content\")}

    }\r\n />\r\n
    \r\n );\r\n }\r\n\r\n renderDialogFooter() {\r\n return (\r\n
    \r\n {\r\n this.props.resetDeleteRequirementAction();\r\n this.setState({ displayConfirmation: false });\r\n }}\r\n style={{ backgroundColor: '#0087b7', borderColor: '#0087b7' }}\r\n className=\"p-button-danger\"\r\n />\r\n this.handleDelete()}\r\n autoFocus\r\n />\r\n
    \r\n );\r\n }\r\n\r\n /*\r\n Validate methods\r\n */\r\n validationWindowForNewScript() {\r\n return (\r\n
    \r\n this.setState({ displayNewRequirementConfirmation: false })}\r\n className=\"p-button-danger\"\r\n />\r\n this.handleNewScript()}\r\n autoFocus\r\n />\r\n
    \r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n this.toast = el}/>\r\n {\r\n this.props.setCurrentRequirement(e.value);\r\n this.setState({ selectedRequirement: e.value }, () => {\r\n if (this.state.selectedRequirement) {\r\n this.props.requirementToViewCallback(this.state.selectedRequirement);\r\n }\r\n });\r\n }}\r\n onRowReorder={((e: any) => {\r\n this.setState({\r\n requirements: e.value\r\n }, () => {\r\n this.handleUploadObject();\r\n });\r\n })}\r\n dataKey=\"requirement\"\r\n stateStorage=\"local\"\r\n selectionMode=\"single\"\r\n reorderableColumns\r\n >\r\n \r\n \r\n \r\n\r\n \r\n this.actionBodyTemplate()\r\n }\r\n />\r\n this.setState({ displayConfirmation: false }, () => this.props.resetDeleteRequirementAction())}\r\n >\r\n
    \r\n \r\n Are you sure you want to proceed?\r\n
    \r\n \r\n\r\n\r\n
    \r\n this.setState({ displayNewRequirementConfirmation: false })}\r\n >\r\n
    \r\n \r\n Are you sure you want to create a new requirement?\r\n\r\n
    \r\n \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(RequirementSidebar);\r\n","export class Requirement {\r\n\r\n constructor(\r\n readonly group: string,\r\n readonly requirement: string,\r\n readonly requirementTitle: string, \r\n readonly answer: any,\r\n readonly prefix?: string,\r\n readonly suffix?: string, \r\n readonly uppercase?: boolean,\r\n readonly isActive?: boolean,\r\n ) {\r\n }\r\n}\r\n","import { AxiosResponse } from \"axios\";\r\nimport { TFunction } from \"i18next\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Card } from \"primereact/card\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport { ToggleButton } from 'primereact/togglebutton';\r\nimport { AutoComplete } from 'primereact/autocomplete';\r\n\r\nimport React from \"react\";\r\nimport { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport { SeverityEnum } from \"../../shared/enum/SeverityEnum\";\r\nimport { FormService } from \"../../form/services/FormService\";\r\nimport { TranslationService } from '../../form/services/TranslationService';\r\nimport { RequirementsService } from '../services/RequirementsService';\r\n\r\nimport RequirementSidebar from \"./components/RequirementSidebar\";\r\nimport \"./RequirementEditor.scss\";\r\nimport { Requirement } from \"../models/Requirement\";\r\nimport { Requirements } from \"../models/Requirements\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\nimport { DecisionTreeEditorService } from \"../services/DecisionTreeEditorService\";\r\nimport { DecisionTreeService } from \"../../form/services/DecisionTreeService\";\r\nimport { Toolbar } from \"primereact/toolbar\";\r\nimport { InputText } from \"primereact/inputtext\";\r\nimport { Checkbox } from \"primereact/checkbox\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n displayConfirmation: boolean;\r\n requirements: Requirement[];\r\n group: string | { name: string },\r\n groups: { name: string | undefined }[];\r\n filteredGroups: { name: string | undefined }[];\r\n requirementName: string,\r\n requirementTitle: { name: string },\r\n answerName: { type: string, target: string },\r\n suffix: string | { name: string },\r\n prefix: string | { name: string },\r\n uppercase: boolean,\r\n refreshRequirementsState: boolean,\r\n prismicKeys: { name: string }[];\r\n schemas: { type: string, target: string }[];\r\n decisionTrees: { type: string, target: string }[];\r\n allDecisionTrees: { type: string, target: string }[];\r\n prefixes: { name: string | undefined }[];\r\n suffixes: { name: string | undefined }[];\r\n filteredPrefixes: { name: string | undefined }[];\r\n filteredSuffixes: { name: string | undefined }[];\r\n decisionTreeList: any[];\r\n displayNewRequirementConfirmation: boolean;\r\n selectedRequirement: any;\r\n displayDeleteConfirmation: boolean;\r\n deleteRequirement: boolean,\r\n downloadRequirement: boolean,\r\n isActive: boolean;\r\n currentRequirement: Requirement | null;\r\n}\r\n\r\n\r\nclass RequirementEditor extends React.Component {\r\n\r\n\r\n private toast: Toast | null;\r\n private t: TFunction;\r\n private formService: FormService;\r\n private decisionTreeEditorService: DecisionTreeEditorService;\r\n\r\n private translationService: TranslationService;\r\n private requirementService: RequirementsService;\r\n private decisionTreeService: DecisionTreeService;\r\n\r\n private leftContents: any;\r\n private rightContents: any;\r\n\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.formService = new FormService();\r\n\r\n this.translationService = new TranslationService();\r\n this.requirementService = new RequirementsService();\r\n this.decisionTreeEditorService = new DecisionTreeEditorService();\r\n this.decisionTreeService = new DecisionTreeService();\r\n\r\n this.state = {\r\n requirements: [],\r\n displayConfirmation: false,\r\n group: \"\",\r\n groups: [],\r\n filteredGroups: [],\r\n requirementName: \"\",\r\n requirementTitle: { name: \"\" },\r\n answerName: { type: \"\", target: \"\" },\r\n suffix: \"\",\r\n prefix: \"\",\r\n uppercase: false,\r\n prismicKeys: [],\r\n refreshRequirementsState: false,\r\n schemas: [],\r\n decisionTrees: [],\r\n allDecisionTrees: [],\r\n\r\n prefixes: [],\r\n suffixes: [],\r\n filteredPrefixes: [],\r\n filteredSuffixes: [],\r\n decisionTreeList: [],\r\n displayNewRequirementConfirmation: false,\r\n selectedRequirement: null,\r\n displayDeleteConfirmation: false,\r\n deleteRequirement: false,\r\n downloadRequirement: false,\r\n isActive: false,\r\n currentRequirement: null,\r\n };\r\n this.resetEditor = this.resetEditor.bind(this);\r\n this.handleUpload = this.handleUpload.bind(this);\r\n\r\n this.searchGroup = this.searchGroup.bind(this);\r\n this.searchPrefix = this.searchPrefix.bind(this);\r\n this.searchSuffix = this.searchSuffix.bind(this);\r\n\r\n }\r\n\r\n\r\n componentDidMount() {\r\n\r\n this.getPrismicKeys().then(() => {\r\n this.getRequirements();\r\n });\r\n this.getDecisionTrees();\r\n this.getSchemas();\r\n\r\n }\r\n\r\n\r\n /**\r\n * Load requirements\r\n */\r\n private getRequirements() {\r\n this.requirementService\r\n .getMany()\r\n .then((response: AxiosResponse) => {\r\n\r\n let groups: { name: string | undefined }[] = [{ name: \"\" }];\r\n let prefixes: { name: string | undefined }[] = [{ name: '' }];\r\n let suffixes: { name: string | undefined }[] = [{ name: \"\" }];\r\n\r\n let requirementsArrived = response.data[0].requirements;\r\n\r\n let counter = 0;\r\n\r\n let groupAlreadyStored: any[] = [];\r\n let prefixAlreadyStored: any[] = [];\r\n let suffixAlreadyStored: any[] = [];\r\n\r\n let foundPrefix = false;\r\n let foundSuffix = false;\r\n\r\n for (let i = 0; i < requirementsArrived.length; i++) {\r\n\r\n if (requirementsArrived[i].group) {\r\n if (!groupAlreadyStored.includes(requirementsArrived[i].group)) {\r\n groupAlreadyStored.push(requirementsArrived[i].group);\r\n groups[counter] = { name: requirementsArrived[i].group };\r\n }\r\n }\r\n\r\n if (requirementsArrived[i].prefix) {\r\n prefixAlreadyStored.push(requirementsArrived[i].prefix);\r\n prefixes[counter] = { name: requirementsArrived[i].prefix };\r\n }\r\n if (requirementsArrived[i].suffix) {\r\n suffixAlreadyStored.push(requirementsArrived[i].suffix);\r\n suffixes[counter] = { name: requirementsArrived[i].suffix };\r\n }\r\n\r\n if (\r\n requirementsArrived[i].group\r\n ||\r\n requirementsArrived[i].suffix\r\n ||\r\n requirementsArrived[i].prefix\r\n &&\r\n !groupAlreadyStored.includes(requirementsArrived[i].group)\r\n ) {\r\n counter++;\r\n }\r\n }\r\n\r\n /* DELETE EMPTY ELEMENT AND ELEMENT.NAME EQUALS TO \"\" */\r\n for (let i = 0; i < groups.length; i++) {\r\n if (!groups[i] || groups[i].name === \"\") {\r\n let index = groups.indexOf(groups[i]);\r\n if (index > -1) {\r\n groups.splice(index, 1);\r\n }\r\n }\r\n }\r\n for (let i = 0; i < prefixes.length; i++) {\r\n if (!prefixes[i] || prefixes[i].name === \"\") {\r\n let index = prefixes.indexOf(prefixes[i]);\r\n if (index > -1) {\r\n prefixes.splice(index, 1);\r\n }\r\n }\r\n }\r\n for (let i = 0; i < suffixes.length; i++) {\r\n if (!suffixes[i] || suffixes[i].name === \"\") {\r\n let index = suffixes.indexOf(suffixes[i]);\r\n if (index > -1) {\r\n suffixes.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n groups = groups.filter(function (el) {\r\n return el != null;\r\n });\r\n prefixes = prefixes.filter(function (el) {\r\n return el != null;\r\n });\r\n suffixes = suffixes.filter(function (el) {\r\n return el != null;\r\n });\r\n\r\n for (let i = 0; i < groups.length; i++) {\r\n if (this.state.groups.includes(groups[i])) {\r\n groups.splice(i, 1);\r\n }\r\n }\r\n\r\n /* Delete duplicate possibly pushed by prismic keys */\r\n prefixes = this.uniq_fast(prefixes);\r\n suffixes = this.uniq_fast(suffixes);\r\n\r\n /* Set values */\r\n this.setState(prevState => (\r\n {\r\n groups: groups,\r\n prefixes: [...prefixes, ...prevState.prefixes],\r\n suffixes: [...suffixes, ...prevState.suffixes]\r\n })\r\n );\r\n\r\n /* REQUIREMENT */\r\n this.setState({ requirements: requirementsArrived });\r\n });\r\n }\r\n\r\n private uniq_fast(a) {\r\n let seen = {};\r\n let out: any[] = [];\r\n let len = a.length;\r\n let j = 0;\r\n for (let i = 0; i < len; i++) {\r\n let item = a[i];\r\n if (seen[item] !== 1) {\r\n seen[item] = 1;\r\n out[j++] = item;\r\n }\r\n }\r\n return out;\r\n }\r\n\r\n /**\r\n * Load decision trees\r\n */\r\n private getDecisionTrees() {\r\n this.decisionTreeService.getAllDecisionTrees().then((res) => {\r\n\r\n let decisionTreesTransform: { type: string, target: string }[] = [];\r\n for (let i = 0; i < res.data.length; i++) {\r\n let name: string = res.data[i].name;\r\n decisionTreesTransform.push({ type: \"decision_tree\", target: name });\r\n }\r\n\r\n this.setState({\r\n decisionTrees: decisionTreesTransform\r\n });\r\n\r\n this.setState({\r\n allDecisionTrees: [...decisionTreesTransform]\r\n });\r\n });\r\n\r\n this.decisionTreeService.getAllDecisionTrees().then((res: any) => {\r\n if (res.data) {\r\n const data = [] as any;\r\n for (const dt of res.data) {\r\n data.push({ type: \"decision_tree\", target: dt.name });\r\n }\r\n this.setState({\r\n decisionTreeList: data\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Load schemas\r\n */\r\n private getSchemas() {\r\n this.decisionTreeEditorService.findAll().then((res) => {\r\n\r\n let schemasTransform: { type: string, target: string }[] = [];\r\n for (let i = 0; i < res.data.length; i++) {\r\n let name: string = res.data[i].name;\r\n schemasTransform.push({ type: \"decision_tree\", target: name });\r\n }\r\n\r\n this.setState({\r\n schemas: schemasTransform\r\n });\r\n\r\n this.setState(prevState => ({\r\n allDecisionTrees: [...schemasTransform, ...prevState.allDecisionTrees]\r\n }));\r\n });\r\n }\r\n\r\n /**\r\n * Load prismic keys\r\n */\r\n private async getPrismicKeys() {\r\n await this.translationService.get('fr')\r\n .then((response) => {\r\n return response;\r\n })\r\n .then((data) => {\r\n\r\n let transformObj = [{ name: '' }];\r\n\r\n for (let i = 0; i < Object.keys(data.data).length; i++) {\r\n transformObj[i] = { name: Object.keys(data.data)[i] };\r\n }\r\n this.setState({ prismicKeys: transformObj });\r\n\r\n /* Delete duplicate possibly pushed by prismic keys */\r\n for (let i = 0; i < transformObj.length; i++) {\r\n if (this.state.prefixes.includes(transformObj[i])) {\r\n\r\n transformObj.splice(i, 1);\r\n }\r\n if (this.state.suffixes.includes(transformObj[i])) {\r\n transformObj.splice(i, 1);\r\n }\r\n }\r\n\r\n this.setState(prevState => ({\r\n prefixes: [...transformObj, ...prevState.prefixes],\r\n suffixes: [...transformObj, ...prevState.suffixes]\r\n }));\r\n });\r\n }\r\n\r\n refreshRequirement = (requirement) => {\r\n\r\n\r\n if (!requirement.requirement) {\r\n requirement.requirement = \"\";\r\n }\r\n if (!requirement.answer) {\r\n requirement.answer = { type: \"\", target: \"\" };\r\n }\r\n if (!requirement.requirementTitle) {\r\n requirement.requirementTitle = { name: \"\" };\r\n }\r\n if (!requirement.prefix) {\r\n requirement.prefix = \"\";\r\n }\r\n if (!requirement.suffix) {\r\n requirement.suffix = \"\";\r\n }\r\n if (!requirement.uppercase) {\r\n requirement.uppercase = false;\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedRequirement: requirement,\r\n group: requirement.group,\r\n requirementName: requirement.requirement,\r\n answerName: requirement.answer,\r\n requirementTitle: { name: requirement.requirementTitle },\r\n prefix: requirement.prefix,\r\n suffix: requirement.suffix,\r\n uppercase: requirement.uppercase\r\n }\r\n );\r\n };\r\n\r\n private searchGroup(event) {\r\n setTimeout(() => {\r\n let filteredGroups;\r\n if (!event.query.trim().length) {\r\n filteredGroups = [...this.state.groups];\r\n }\r\n else {\r\n filteredGroups = this.state.groups.filter((group) => {\r\n return group.name?.toLowerCase().startsWith(event.query.toLowerCase());\r\n });\r\n }\r\n this.setState({ filteredGroups });\r\n }, 250);\r\n }\r\n\r\n private searchPrefix(event) {\r\n setTimeout(() => {\r\n\r\n let filteredPrefixes: { name: string | undefined }[];\r\n\r\n if (!event.query.trim().length) {\r\n filteredPrefixes = [...this.state.prefixes];\r\n }\r\n else {\r\n filteredPrefixes = this.state.prefixes.filter((prefix) => {\r\n return prefix.name?.toLowerCase().startsWith(event.query.toLowerCase());\r\n });\r\n }\r\n this.setState({ filteredPrefixes });\r\n }, 250);\r\n }\r\n\r\n private searchSuffix(event) {\r\n setTimeout(() => {\r\n let filteredSuffixes;\r\n if (!event.query.trim().length) {\r\n filteredSuffixes = [...this.state.suffixes];\r\n }\r\n else {\r\n filteredSuffixes = this.state.suffixes.filter((suffix) => {\r\n return suffix.name?.toLowerCase().startsWith(event.query.toLowerCase());\r\n });\r\n }\r\n this.setState({ filteredSuffixes });\r\n }, 250);\r\n }\r\n\r\n\r\n /**\r\n * On upload for one script\r\n */\r\n handleUpload() {\r\n\r\n let group = this.state.group;\r\n let requirementName = this.state.requirementName;\r\n let requirementTitle = this.state.requirementTitle;\r\n let answerName = this.state.answerName;\r\n\r\n let suffix = \"\";\r\n let prefix = \"\";\r\n\r\n /* let suffix = this.state.suffix;\r\n let prefix = this.state.prefix; */\r\n\r\n if (typeof this.state.suffix === 'string') {\r\n suffix = this.state.suffix;\r\n }\r\n else {\r\n suffix = this.state.suffix.name;\r\n }\r\n\r\n if (typeof this.state.prefix === 'string') {\r\n prefix = this.state.prefix;\r\n }\r\n else {\r\n prefix = this.state.prefix.name;\r\n }\r\n\r\n\r\n let uppercase = this.state.uppercase;\r\n\r\n if (typeof this.state.group === 'string') {\r\n group = this.state.group;\r\n }\r\n else {\r\n group = this.state.group.name;\r\n }\r\n\r\n if (!group || group === \"\") {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please enter a group name !`,\r\n });\r\n return;\r\n }\r\n else if (!requirementName) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please enter a requirement name !`,\r\n });\r\n return;\r\n }\r\n else if (!requirementTitle.name || requirementTitle.name === \"\") {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please select the title requirement !`,\r\n });\r\n return;\r\n }\r\n else if (!answerName || answerName.target === \"\") {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Please select the answer of the requirement !`,\r\n });\r\n return;\r\n }\r\n\r\n\r\n let requi = new Requirement(\r\n group,\r\n requirementName,\r\n requirementTitle.name,\r\n answerName,\r\n prefix,\r\n suffix,\r\n uppercase,\r\n this.state.isActive\r\n );\r\n\r\n const r = this.state.requirements as any;\r\n if (!r.length) {\r\n r[0] = requi;\r\n }\r\n for (let i = 0; i < r.length; i++) {\r\n if (r[i].requirement === requi.requirement) {\r\n r[i] = requi;\r\n break;\r\n }\r\n else if (\r\n r[i].requirement !== requi.requirement\r\n &&\r\n r[r.length - 1] === r[i]\r\n ) {\r\n r.push(requi);\r\n break;\r\n }\r\n }\r\n this.setState({\r\n requirements: r\r\n });\r\n\r\n const dtoRequi = new Requirements(\r\n 'default',\r\n this.state.requirements\r\n );\r\n\r\n const jsonString = JSON.stringify(dtoRequi);\r\n\r\n let f = new File([jsonString], \"data.json\", { type: \"application/json\" });\r\n this.requirementService\r\n .uploadRequirements(f)\r\n .then(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: `Success - Requirement uploaded`,\r\n });\r\n this.setState({ refreshRequirementsState: true });\r\n })\r\n .catch((err: any) => {\r\n const message = err?.response?.data?.message;\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Requirement NOT uploaded : ${message}`,\r\n });\r\n });\r\n }\r\n\r\n resetEditor() {\r\n\r\n this.setState({\r\n requirements: [],\r\n displayConfirmation: false,\r\n group: \"\",\r\n groups: [],\r\n filteredGroups: [],\r\n requirementName: \"\",\r\n requirementTitle: { name: \"\" },\r\n answerName: { type: \"\", target: \"\" },\r\n suffix: \"\",\r\n prefix: \"\",\r\n uppercase: false,\r\n prismicKeys: [],\r\n refreshRequirementsState: false,\r\n schemas: [],\r\n decisionTrees: [],\r\n allDecisionTrees: [],\r\n currentRequirement: null,\r\n isActive: true,\r\n\r\n prefixes: [],\r\n suffixes: [],\r\n filteredPrefixes: [],\r\n filteredSuffixes: [],\r\n }, () => {\r\n this.getRequirements();\r\n this.getPrismicKeys();\r\n this.getSchemas();\r\n this.getDecisionTrees();\r\n });\r\n\r\n\r\n }\r\n\r\n handleDeletedRequirement = () => {\r\n this.resetEditor();\r\n };\r\n\r\n handleNewScript() {\r\n this.setState({ displayNewRequirementConfirmation: false });\r\n this.resetEditor();\r\n }\r\n\r\n renderDeleteDialogFooter() {\r\n return (\r\n
    \r\n this.setState({ displayConfirmation: false })}\r\n className=\"p-button-text\"\r\n />\r\n this.setState({ deleteRequirement: true })}\r\n autoFocus\r\n />\r\n
    \r\n );\r\n }\r\n\r\n\r\n render() {\r\n this.leftContents = (\r\n \r\n

    Requirement editor

    \r\n
    \r\n this.setState({ requirementName: e.currentTarget.value })}\r\n placeholder=\"Requirement name\"\r\n style={{ width: '20rem' }}\r\n className=\"requirementInput\"\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n if (this.state.currentRequirement) {\r\n this.requirementService.activeOne(this.state.requirementName, e.checked).then(res => {\r\n if (res.status === 201) {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: `Requirement updated!`,\r\n });\r\n const currentRequirement = this.state.currentRequirement as any;\r\n if (currentRequirement) {\r\n currentRequirement.isActive = e.checked;\r\n }\r\n this.setState({ isActive: e.checked, refreshRequirementsState: true, currentRequirement });\r\n }\r\n });\r\n }\r\n else {\r\n this.setState({ isActive: e.checked });\r\n }\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n this.rightContents = (\r\n
    \r\n this.setState({\r\n downloadRequirement: true\r\n }, () => this.setState({\r\n downloadRequirement: false\r\n }))}\r\n />\r\n \r\n {\r\n if (!this.state.selectedRequirement) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n summary: 'Error',\r\n detail: `Please select a requirement`,\r\n });\r\n return;\r\n }\r\n else {\r\n this.setState({ deleteRequirement: true });\r\n }\r\n }}\r\n />\r\n
    \r\n );\r\n\r\n return (\r\n
    \r\n
    \r\n this.setState({ refreshRequirementsState: false })}\r\n deletedRequirement={this.handleDeletedRequirement}\r\n deleteRequirementAction={this.state.deleteRequirement}\r\n resetDeleteRequirementAction={() => this.setState({ deleteRequirement: false })}\r\n actionDownloadRequirement={this.state.downloadRequirement}\r\n setCurrentRequirement={(currentRequirement) => {\r\n this.setState({ currentRequirement, isActive: (currentRequirement.isActive === undefined) ? true : currentRequirement.isActive });\r\n }}\r\n />\r\n
    \r\n \r\n
    \r\n \r\n (this.toast = el)}/>\r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n {\"Group\"}\r\n \r\n\r\n this.setState({ group: e.value })}\r\n />\r\n\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {\"Answer\"}\r\n \r\n {\r\n this.setState({ answerName: e.value });\r\n }}\r\n optionLabel=\"target\"\r\n filter\r\n filterBy=\"target\"\r\n placeholder={\"Select the answer target\"}\r\n />\r\n \r\n
    \r\n
    \r\n {\"Requirement title\"}\r\n \r\n {\r\n this.setState({ requirementTitle: e.value });\r\n }}\r\n optionLabel=\"name\"\r\n filter\r\n filterBy=\"name\"\r\n placeholder={\"Select a prismic key\"}\r\n />\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {\"Prefix\"}\r\n \r\n {/* this.setState({ prefix: e.currentTarget.value })}\r\n\r\n placeholder=\"Prefix\"\r\n style={{width: '20rem'}}\r\n /> */}\r\n\r\n this.setState({ prefix: e.value })}\r\n />\r\n\r\n \r\n
    \r\n
    \r\n {\"Suffix\"}\r\n \r\n\r\n this.setState({ suffix: e.value })}\r\n />\r\n\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n {\"Uppercase\"}\r\n this.setState({ uppercase: e.value })}\r\n onIcon=\"pi pi-check\"\r\n offIcon=\"pi pi-times\"\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withTranslation()(RequirementEditor);\r\n","import {APIService} from \"../../../shared/services/APIService\";\r\nimport {Form} from \"../../../form/models/Form\";\r\nimport {Schema} from \"../../models/Schema\";\r\nimport {FormQuestion} from \"../../../form/models/FormQuestion\";\r\n\r\nexport class FormEditorService extends APIService {\r\n\r\n /**\r\n * Get form\r\n */\r\n getForm() {\r\n return this.http.get
    ('/forms/default');\r\n }\r\n\r\n updateQuestionName(schema: Schema | null, currentTreeName: string | null) {\r\n return this.http.put(`/editor-decision-trees/update-name/${currentTreeName}`, schema);\r\n }\r\n\r\n updateQuestions(questions: FormQuestion[]) {\r\n return this.http.put(`/forms/update-questions`, {questions});\r\n }\r\n\r\n updateForm(form: Form | null) {\r\n return this.http.put(`/forms/update-form`, {form});\r\n }\r\n}\r\n","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport { TFunction } from \"i18next\";\r\nimport { FormService } from \"../../../form/services/FormService\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport { Button } from \"primereact/components/button/Button\";\r\nimport { DataTable } from \"primereact/components/datatable/DataTable\";\r\nimport { Column } from \"primereact/components/column/Column\";\r\nimport \"./FormEditorSidebar.scss\";\r\nimport { Form } from \"../../../form/models/Form\";\r\nimport { FormEditorService } from \"../services/FormEditorService\";\r\nimport { SeverityEnum } from \"../../../shared/enum/SeverityEnum\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\nimport { QuestionType } from \"../../../form/enum/QuestionType\";\r\nimport { InputText } from \"primereact/inputtext\";\r\nimport { Chips } from 'primereact/chips';\r\nimport { Toolbar } from \"primereact/toolbar\";\r\nimport { FormType } from \"../../../form/enum/FormType\";\r\nimport { RadioButton } from \"primereact/radiobutton\";\r\nimport { DecisionTreeEditorService } from \"../../services/DecisionTreeEditorService\";\r\nimport { DecisionTree } from \"../../../admin/models/DecisionTree\";\r\n\r\n\r\ninterface States {\r\n questions: any[];\r\n currentQuestion: any;\r\n displayAddQuestionDialog: boolean;\r\n displayDeleteAllQuestionDialog: boolean;\r\n displayConfigFormDialog: boolean;\r\n currentNewQuestion: any;\r\n currentNewQuestionType: any;\r\n formConfig: { googleTag: string, prismic: string[], type: FormType, graphDecisionTree: string | null, diagramDecisionTree: string | null };\r\n form: Form | null;\r\n}\r\n\r\ninterface Props extends WithTranslation {\r\n questions: any[];\r\n form: Form | null;\r\n onQuestionSelection: (question) => void;\r\n refreshQuestionList: () => void;\r\n prismicKeys: string[];\r\n addQuestion: (question) => void;\r\n deleteAllQuestion: () => void;\r\n saveFormConfig: (formConfig) => void;\r\n currentQuestion: any;\r\n decisionTrees: DecisionTree[]\r\n}\r\n\r\nclass FormEditorSidebar extends React.Component {\r\n\r\n private t: TFunction;\r\n private formService: FormService;\r\n private formEditorService: FormEditorService;\r\n private toast: Toast | null;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.formEditorService = new FormEditorService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n\r\n this.state = {\r\n questions: [],\r\n currentQuestion: null,\r\n displayAddQuestionDialog: false,\r\n displayDeleteAllQuestionDialog: false,\r\n displayConfigFormDialog: false,\r\n currentNewQuestionType: null,\r\n currentNewQuestion: null,\r\n formConfig: { googleTag: '', prismic: [], type: FormType.REQUIREMENT, graphDecisionTree: null, diagramDecisionTree: null },\r\n form: null\r\n };\r\n }\r\n\r\n private _onQuestionOrder(e: any) {\r\n this.formEditorService.updateQuestions(e).then(() => {\r\n this.props.refreshQuestionList();\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: 'Question déplacée!',\r\n });\r\n });\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any) {\r\n this.setState({\r\n questions: nextProps.questions\r\n });\r\n if (nextProps.form) {\r\n const formConfig = {\r\n googleTag: nextProps.form.googleTag ?? '',\r\n prismic: nextProps.form.prismic ?? [],\r\n type: nextProps.form.type ?? FormType.REQUIREMENT,\r\n graphDecisionTree: nextProps.form.graphDecisionTree ?? null,\r\n diagramDecisionTree: nextProps.form.diagramDecisionTree ?? null\r\n };\r\n this.setState({\r\n formConfig\r\n });\r\n }\r\n if (nextProps.currentQuestion) {\r\n this.setState({\r\n currentQuestion: nextProps.currentQuestion\r\n });\r\n }\r\n }\r\n\r\n private _renderAddQuestionDialogFooter() {\r\n return (\r\n
    \r\n this.setState({\r\n displayAddQuestionDialog: false,\r\n currentNewQuestion: null,\r\n currentNewQuestionType: null\r\n })}\r\n className=\"p-mb-2\"\r\n />\r\n {\r\n let question: any = {\r\n values: [],\r\n question: this.state.currentNewQuestion,\r\n type: this.state.currentNewQuestionType\r\n };\r\n switch (question.type) {\r\n case QuestionType.NUMBER:\r\n question.validation = {\r\n min: 0,\r\n step: 1\r\n };\r\n }\r\n this.props.addQuestion(question);\r\n this.setState({\r\n displayAddQuestionDialog: false,\r\n });\r\n }}\r\n disabled={(!this.state.currentNewQuestionType || !this.state.currentNewQuestion)}\r\n\r\n className=\"p-mb-2\"\r\n />\r\n
    \r\n );\r\n }\r\n\r\n private _addNewEmptyQuestion() {\r\n let question: any = {\r\n values: [],\r\n question: `New_question_${this.state.questions.length + 1}`,\r\n type: null\r\n };\r\n for (const q of this.props.questions) {\r\n //check if question already exist\r\n if (q.question === question.question) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: `Question with the name ${question.question} already exists !`,\r\n });\r\n return;\r\n }\r\n }\r\n this.props.addQuestion(question);\r\n this.setState({ currentQuestion: question });\r\n this.props.onQuestionSelection(question);\r\n this.setState({\r\n displayAddQuestionDialog: false,\r\n });\r\n }\r\n\r\n render() {\r\n\r\n let questionTypes: any[] = [];\r\n for (let i in QuestionType) {\r\n questionTypes.push({ name: QuestionType[i], label: QuestionType[i] });\r\n }\r\n\r\n let formConfigPrismic: any[] = [];\r\n let commonPrismic: any[] = [];\r\n for (let prismic of this.state.formConfig.prismic) {\r\n if (!prismic.includes('common')) {\r\n formConfigPrismic.push(prismic);\r\n }\r\n else {\r\n commonPrismic.push(prismic);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n this.toast = el} />\r\n
    \r\n {\r\n this._onQuestionOrder(e.value);\r\n }}\r\n selection={this.state.currentQuestion}\r\n onSelectionChange={e => {\r\n this.setState({ currentQuestion: e.value });\r\n this.props.onQuestionSelection(e.value);\r\n }}\r\n selectionMode=\"single\"\r\n dataKey=\"question\"\r\n scrollHeight=\"70vh\"\r\n scrollable\r\n >\r\n \r\n \r\n \r\n (\r\n
    \r\n this.setState({ displayConfigFormDialog: true })}\r\n style={{ backgroundColor: '#0087b7', borderColor: '#0087b7' }}\r\n className=\"p-button-secondary\" />\r\n this._addNewEmptyQuestion()}\r\n className=\"p-button-success\" />\r\n
    \r\n )}\r\n />\r\n
    \r\n {\r\n this.setState({\r\n displayAddQuestionDialog: false,\r\n currentNewQuestion: null,\r\n currentNewQuestionType: null\r\n });\r\n }}>\r\n
    \r\n
    \r\n \r\n {\r\n this.setState({ currentNewQuestion: e.value.name ?? e.value });\r\n }}\r\n filter\r\n editable\r\n appendTo={document.body}\r\n placeholder=\"Select a question\" />\r\n
    \r\n
    \r\n \r\n {\r\n this.setState({ currentNewQuestionType: e.value.name ?? e.value });\r\n }}\r\n filter\r\n editable\r\n appendTo={document.body}\r\n placeholder=\"Select a question\" />\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n )}\r\n onHide={() => this.setState({ displayDeleteAllQuestionDialog: false })}>\r\n
    \r\n \r\n Voulez-vous supprimer toutes les questions ?\r\n
    \r\n \r\n \r\n
    \r\n )}\r\n onHide={() => this.setState({ displayConfigFormDialog: false })}>\r\n
    \r\n\r\n
    \r\n \r\n {\r\n const formConfig = this.state.formConfig;\r\n formConfig.googleTag = e.target.value;\r\n this.setState({ formConfig });\r\n }}\r\n />\r\n
    \r\n
    \r\n \r\n {\r\n const formConfig = this.state.formConfig;\r\n formConfig.prismic = e.value;\r\n formConfig.prismic = formConfig.prismic.concat(commonPrismic);\r\n this.setState({ formConfig });\r\n }}\r\n />\r\n
    \r\n
    \r\n *Write the key and press \"enter\" to add the key in the Prismic list.\r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n const formConfig = this.state.formConfig\r\n formConfig.type = FormType.GRAPH\r\n this.setState({\r\n formConfig\r\n })\r\n }}>\r\n \r\n
    \r\n
    \r\n {\r\n const formConfig = this.state.formConfig\r\n formConfig.type = FormType.REQUIREMENT\r\n this.setState({\r\n formConfig\r\n })\r\n }}\r\n >\r\n \r\n
    \r\n
    \r\n {this.state.formConfig.type === FormType.GRAPH && (\r\n <>\r\n
    \r\n \r\n e.name)}\r\n onChange={(e) => {\r\n const formConfig = this.state.formConfig\r\n formConfig.graphDecisionTree = e.value\r\n this.setState({\r\n formConfig\r\n })\r\n }}\r\n placeholder=\"Graph decision tree\"\r\n required={this.state.formConfig.type === FormType.GRAPH}\r\n />\r\n
    \r\n
    \r\n \r\n e.name)}\r\n onChange={(e) => {\r\n const formConfig = this.state.formConfig\r\n formConfig.diagramDecisionTree = e.value\r\n this.setState({\r\n formConfig\r\n })\r\n }}\r\n placeholder=\"Diagram decision tree\"\r\n required={this.state.formConfig.type === FormType.GRAPH}\r\n />\r\n
    \r\n \r\n\r\n )}\r\n\r\n\r\n\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormEditorSidebar);\r\n","export enum OperatorEnum {\r\n NOT_EQUAL = 'neq',\r\n EQUAL = 'eq',\r\n GREATER_THAN = 'gt',\r\n GREATER_THAN_OR_EQUAL_TO = 'gte',\r\n LOWER_THAN = 'lt',\r\n LOWER_THAN_OR_EQUAL_TO = 'lte',\r\n IN = 'in',\r\n NOT_IN = 'nin',\r\n AND = 'and',\r\n OR = 'or',\r\n STRICTLY_EQUAL = 'strictly_eq',\r\n STRICTLY_INCLUDED = 'strictly_included',\r\n STRICTLY_INCLUDES = 'strictly_includes'\r\n}\r\n","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport \"./FormEditorTopbar.scss\";\r\nimport { TFunction } from \"i18next\";\r\nimport { FormService } from \"../../../form/services/FormService\";\r\nimport { DecisionTreeEditorService } from \"../../services/DecisionTreeEditorService\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport { SeverityEnum } from \"../../../shared/enum/SeverityEnum\";\r\nimport { Button } from \"primereact/components/button/Button\";\r\nimport { Toolbar } from \"primereact/toolbar\";\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport { Input } from \"@bbri/ui\";\r\nimport { FormEditorService } from \"../services/FormEditorService\";\r\nimport { InputText } from \"primereact/inputtext\";\r\n\r\n\r\ninterface States {\r\n currentQuestion: any;\r\n displayDialog: boolean;\r\n showConfirmDeleteDialog: boolean;\r\n showRenameDialog: boolean;\r\n showFormDialog: boolean;\r\n currentQuestionName: any;\r\n}\r\n\r\ninterface Props extends WithTranslation {\r\n currentQuestion: any;\r\n refreshQuestionList: () => void;\r\n updateQuestionName: (currentQuestion: any, currentName: string) => any;\r\n currentForm: any;\r\n saveForm: () => any;\r\n deleteQuestion: (question) => void;\r\n\r\n}\r\n\r\nclass FormEditorTopbar extends React.Component {\r\n\r\n private t: TFunction;\r\n private formService: FormService;\r\n private formEditorService: FormEditorService;\r\n private decisionTreeEditorService: DecisionTreeEditorService;\r\n private toast: Toast | null;\r\n private leftContents: any;\r\n private rightContents: any;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n this.formEditorService = new FormEditorService();\r\n this.decisionTreeEditorService = new DecisionTreeEditorService();\r\n this.t = this.props.t;\r\n this.toast = null;\r\n this.state = {\r\n currentQuestion: null,\r\n displayDialog: false,\r\n showConfirmDeleteDialog: false,\r\n showRenameDialog: false,\r\n showFormDialog: false,\r\n currentQuestionName: null\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any) {\r\n if (nextProps.currentQuestion) {\r\n this.setState({\r\n currentQuestion: nextProps.currentQuestion,\r\n currentQuestionName: nextProps.currentQuestion.question\r\n });\r\n }\r\n }\r\n\r\n private _renderRenameDialogFooter() {\r\n return (\r\n
    \r\n this.setState({\r\n currentQuestionName: this.state.currentQuestion.question,\r\n showRenameDialog: false\r\n })}\r\n className=\"p-mb-2\"\r\n />\r\n this._updateCurrentQuestionName()}\r\n className=\"p-mb-2\"\r\n />\r\n
    \r\n );\r\n }\r\n\r\n private _renderDeleteFooter() {\r\n return (\r\n
    \r\n this.setState({ showConfirmDeleteDialog: false })}\r\n style={{ backgroundColor: '#0087b7', borderColor: '#0087b7' }}\r\n className=\"p-button-danger\"\r\n />\r\n this._deleteQuestion()}\r\n className=\"p-button-danger\"\r\n />\r\n
    \r\n );\r\n }\r\n\r\n private _updateCurrentQuestionName() {\r\n if (!this.state.currentQuestionName) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: \"Le nom n'a pas été modifié !\",\r\n });\r\n return;\r\n }\r\n if (this.props.currentQuestion) {\r\n this.props.updateQuestionName(this.state.currentQuestion, this.state.currentQuestionName).then(r => {\r\n if (r) {\r\n this.toast?.show({\r\n severity: SeverityEnum.SUCCESS,\r\n detail: 'Schéma sauvegardé',\r\n });\r\n let currentQuestion = this.state.currentQuestion;\r\n currentQuestion.question = this.state.currentQuestionName;\r\n this.setState({\r\n currentQuestion,\r\n showRenameDialog: false\r\n });\r\n }\r\n }).catch(() => {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: 'Une erreur est survenue !',\r\n });\r\n });\r\n\r\n }\r\n }\r\n\r\n private _deleteQuestion() {\r\n if (this.props.currentQuestion) {\r\n this.props.deleteQuestion(this.state.currentQuestion);\r\n this.setState({\r\n showConfirmDeleteDialog: false\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n\r\n this.leftContents = (\r\n \r\n

    Form editor

    \r\n
    \r\n {\r\n if (this.state.currentQuestion) {\r\n const currentQuestion = this.state.currentQuestion;\r\n currentQuestion.newName = e.currentTarget.value;\r\n this.setState({\r\n currentQuestion,\r\n currentQuestionName: e.currentTarget.value\r\n });\r\n }\r\n }}\r\n placeholder=\"Question name\"\r\n style={{ width: '20rem' }}\r\n className=\"requirementInput\"\r\n disabled={!this.state.currentQuestion}\r\n />\r\n
    \r\n
    \r\n );\r\n this.rightContents = (\r\n
    \r\n
    \r\n );\r\n\r\n if (!this.state.currentQuestionName && this.state.currentQuestion) {\r\n this.setState({\r\n currentQuestionName: this.state.currentQuestion.question\r\n });\r\n }\r\n\r\n return (\r\n
    \r\n (this.toast = el)}/>\r\n \r\n {\r\n this.setState({\r\n showRenameDialog: false\r\n });\r\n }}>\r\n \r\n {\r\n this.setState({\r\n currentQuestionName: e.target.value\r\n });\r\n }}\r\n />\r\n \r\n this.setState({ showConfirmDeleteDialog: false })}\r\n header=\"Confirmation\"\r\n footer={this._renderDeleteFooter()}\r\n >\r\n
    \r\n \r\n Do you want to delete this question?\r\n
    \r\n \r\n {\r\n\r\n }}\r\n header={this.props.currentQuestion?.key ?? ''}\r\n style={{ width: '1000px', height: '500px' }}\r\n >\r\n \r\n {\r\n this.setState({\r\n showFormDialog: false\r\n });\r\n }}\r\n header=\"Form\"\r\n visible={this.state.showFormDialog}\r\n footer={\r\n
    \r\n {\r\n prompt(\"Copy to clipboard: Ctrl+C, Enter\", JSON.stringify(this.props.currentForm, null, 4) ?? '');\r\n }}\r\n className=\"p-button-danger\"\r\n />\r\n
    \r\n }\r\n style={{ width: '1000px' }}\r\n >\r\n
    {JSON.stringify(this.props.currentForm, null, 4)}
    \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(FormEditorTopbar);\r\n","import { withTranslation, WithTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport { FormQuestion } from \"../../../form/models/FormQuestion\";\r\nimport { Dropdown } from \"primereact/dropdown\";\r\nimport { QuestionType } from \"../../../form/enum/QuestionType\";\r\nimport { TranslationService } from \"../../../form/services/TranslationService\";\r\nimport { InputText } from \"primereact/inputtext\";\r\nimport { DataTable } from 'primereact/datatable';\r\nimport { Column } from 'primereact/column';\r\nimport { Button } from 'primereact/button';\r\nimport { Dialog } from \"primereact/dialog\";\r\nimport \"./FormEditorWorkPlace.scss\";\r\nimport { Checkbox } from \"primereact/checkbox\";\r\nimport { DecisionTree } from \"../../../admin/models/DecisionTree\";\r\nimport { Fieldset } from \"primereact/fieldset\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport { MultiSelect } from \"primereact/multiselect\";\r\nimport { OrganizationChart } from \"primereact/organizationchart\";\r\nimport { OperatorEnum } from \"../operator.enum\";\r\nimport { TabPanel, TabView } from 'primereact/tabview';\r\nimport { InputNumber } from 'primereact/inputnumber';\r\nimport { InputTextarea } from \"primereact/inputtextarea\";\r\nimport { SeverityEnum } from \"../../../shared/enum/SeverityEnum\";\r\n\r\ninterface States {\r\n currentQuestion: FormQuestion | null;\r\n changes: boolean;\r\n isEditing: boolean;\r\n displayAddValueDialog: boolean;\r\n displayAddConditionDialog: boolean;\r\n displayDeleteConditionDialog: boolean;\r\n displayEditConditionDialog: boolean;\r\n currentValue: any;\r\n currentImageValue: any;\r\n currentSubQuestion: any;\r\n currentSubQuestionType: any;\r\n currentImageName: any;\r\n currentCondition: any;\r\n currentConditionEdit: any;\r\n activeIndex: number;\r\n}\r\n\r\ninterface Props extends WithTranslation {\r\n currentQuestion: any;\r\n prismicKeys: string[];\r\n questions: FormQuestion[];\r\n decisionTrees: DecisionTree[];\r\n}\r\n\r\nclass FormEditorWorkPlace extends React.Component {\r\n\r\n private translationService: TranslationService;\r\n private toast: Toast | null;\r\n private nodeCount: number;\r\n private nodeCount2: number;\r\n private nodes: any;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.toast = null;\r\n this.translationService = new TranslationService();\r\n this.nodeCount = 0;\r\n this.nodeCount2 = 0;\r\n\r\n this.state = {\r\n currentQuestion: null,\r\n changes: false,\r\n isEditing: false,\r\n displayAddValueDialog: false,\r\n displayAddConditionDialog: false,\r\n displayDeleteConditionDialog: false,\r\n displayEditConditionDialog: false,\r\n currentValue: '',\r\n currentImageValue: '',\r\n currentSubQuestion: null,\r\n currentSubQuestionType: null,\r\n currentImageName: null,\r\n currentCondition: { currentNode: null, lhs: { type: null, value: null }, operator: null, rhs: { type: null, value: null } },\r\n currentConditionEdit: null,\r\n activeIndex: 0\r\n };\r\n }\r\n\r\n componentWillReceiveProps(nextProps: Readonly, nextContext: any) {\r\n this.setState({\r\n currentQuestion: nextProps.currentQuestion\r\n });\r\n }\r\n\r\n private _setQuestionValue(key: string, value: any) {\r\n let currentQuestion = this.state.currentQuestion;\r\n if (currentQuestion) {\r\n currentQuestion[key] = value;\r\n this.setState({\r\n currentQuestion,\r\n changes: true\r\n });\r\n }\r\n }\r\n\r\n private _setQuestionValueWithDoubleKey(key: string[], value: any) {\r\n let currentQuestion = this.state.currentQuestion;\r\n if (currentQuestion) {\r\n if (!currentQuestion[key[0]]) {\r\n currentQuestion[key[0]] = {} as any;\r\n }\r\n currentQuestion[key[0]][key[1]] = value;\r\n this.setState({\r\n currentQuestion,\r\n changes: true\r\n });\r\n }\r\n }\r\n\r\n private _editValue(props) {\r\n return ( {\r\n let currentQuestion = this.state.currentQuestion;\r\n if (currentQuestion) {\r\n currentQuestion.values[props.rowIndex] = e.value.name ?? e.value;\r\n this.setState({ currentQuestion });\r\n }\r\n }}\r\n placeholder=\"Select a City\"\r\n filter\r\n editable\r\n />);\r\n }\r\n\r\n private _editImageValue(props) {\r\n return ( {\r\n let currentQuestion = this.state.currentQuestion;\r\n if (currentQuestion) {\r\n currentQuestion.imageValues[props.rowIndex] = e.value.name ?? e.value;\r\n this.setState({ currentQuestion });\r\n }\r\n }}\r\n placeholder=\"Select a City\"\r\n filter\r\n editable\r\n />);\r\n }\r\n\r\n private _actionBodyTemplate(row) {\r\n return (\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n\r\n\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(DiagramEditor);\r\n","import React from \"react\";\r\nimport {withTranslation, WithTranslation} from \"react-i18next\";\r\nimport {AuthService} from \"../login/services/AuthService\";\r\nimport {Submission} from \"./models/Submission\"\r\nimport {SubmissionService} from \"./services/SubmissionService\"\r\nimport {Button, Content, Panel} from \"@bbri/ui\";\r\nimport {DataTable} from \"primereact/datatable\";\r\nimport {Column} from \"primereact/column\";\r\nimport FormPage from \"../form/FormPage\";\r\nimport {Dialog} from \"primereact/dialog\";\r\nimport {Checkbox} from \"primereact/checkbox\";\r\nimport \"./UserPage.scss\"\r\nimport {DecisionTreeService} from \"../form/services/DecisionTreeService\";\r\nimport {Form} from \"../form/models/Form\";\r\nimport {FormService} from \"../form/services/FormService\";\r\nimport {Graph} from \"../form/models/Graph\";\r\nimport {Dot} from \"../form/models/Dot\";\r\nimport FormPVGraph from \"../form/components/FormPVGraph\";\r\nimport {FormUtils} from \"../form/utils/FormUtils\";\r\nimport {TFunction} from \"i18next\";\r\nimport {FormType} from \"../form/enum/FormType\";\r\nimport {ResponsesDTO} from \"../form/dto/ResponsesDTO\";\r\nimport {InputText} from \"primereact/inputtext\";\r\nimport {Toast} from \"primereact/toast\";\r\nimport {SeverityEnum} from \"../shared/enum/SeverityEnum\";\r\nimport {InputTextarea} from \"primereact/inputtextarea\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\ninterface States {\r\n form: Form | null\r\n submissions: Submission[]\r\n selectedSubmissions: Submission[]\r\n comparedGraphs: Graph[]\r\n highlightedValues: any[]\r\n editState: string\r\n currentSubmission: Submission | null\r\n duplicateSubmissionName: string\r\n newSubmissionName: string\r\n newSubmissionDescription: string\r\n showArchiveModal: boolean\r\n showArchiveMultipleModal: boolean\r\n showArchivedValue: boolean\r\n showDeleteModal: boolean\r\n showDuplicateModal: boolean\r\n showNameModal: boolean\r\n showDescriptionModal: boolean\r\n}\r\n\r\n\r\n\r\nclass UserPage extends React.Component {\r\n\r\n private toast : Toast | null\r\n private submissionService: SubmissionService\r\n private decisionTreeService: DecisionTreeService\r\n private formService: FormService\r\n private t: TFunction;\r\n\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.toast = null\r\n this.submissionService = new SubmissionService()\r\n this.decisionTreeService = new DecisionTreeService()\r\n this.formService = new FormService()\r\n this.t = this.props.t;\r\n this.state = {\r\n form: null,\r\n submissions: [],\r\n selectedSubmissions: [],\r\n comparedGraphs: [],\r\n highlightedValues: [],\r\n editState: \"OVERVIEW\",\r\n currentSubmission: null,\r\n duplicateSubmissionName: \"\",\r\n newSubmissionName: \"\",\r\n newSubmissionDescription: \"\",\r\n showArchiveModal: false,\r\n showArchiveMultipleModal: false,\r\n showArchivedValue: false,\r\n showDeleteModal: false,\r\n showDuplicateModal: false,\r\n showNameModal: false,\r\n showDescriptionModal: false\r\n }\r\n\r\n this._getSubmissions()\r\n }\r\n\r\n componentDidMount(): void {\r\n this.formService.getForm(\"default\")\r\n .then((res) => {\r\n this.setState({\r\n form: res.data\r\n })\r\n })\r\n .catch((err) => {\r\n console.log(err)\r\n })\r\n }\r\n\r\n private _getSubmissions() {\r\n if (AuthService.user) {\r\n this.submissionService.getUserSubmissions()\r\n .then(\r\n (res) => {\r\n this.setState({\r\n submissions: res.data\r\n })\r\n }\r\n )\r\n }\r\n }\r\n\r\n private handleNewSimulation() {\r\n this.setState({\r\n editState: \"NEW\",\r\n currentSubmission: null,\r\n comparedGraphs: []\r\n })\r\n }\r\n\r\n private handleUpdateClick(props: Submission) {\r\n this.setState({\r\n editState: \"UPDATE\",\r\n currentSubmission: props,\r\n comparedGraphs: []\r\n })\r\n }\r\n\r\n private handleResultClick(props: Submission): void {\r\n this.setState({\r\n editState: \"RESULT\",\r\n currentSubmission: props,\r\n comparedGraphs: []\r\n })\r\n }\r\n\r\n private handleArchiveClick(props: Submission): void {\r\n this.setState({\r\n showArchiveModal: true,\r\n currentSubmission: props,\r\n comparedGraphs: []\r\n })\r\n }\r\n\r\n private handleDeleteClick(props: Submission): void {\r\n this.setState({\r\n showDeleteModal: true,\r\n currentSubmission: props,\r\n comparedGraphs: []\r\n })\r\n }\r\n\r\n private async handleCloneClick(props: Submission) {\r\n\r\n this.setState({\r\n showDuplicateModal: true,\r\n currentSubmission: props,\r\n })\r\n\r\n }\r\n\r\n private async handleCompareSimulation() {\r\n let graphs: Graph[] = []\r\n for (const submission of this.state.selectedSubmissions) {\r\n if (this.state.form?.graphDecisionTree) {\r\n const result = await this.decisionTreeService.computeDecisionTree(this.state.form.graphDecisionTree, FormUtils.getValidValues(this.state.form.questions, submission.responses, submission.history, submission.history[submission.history.length - 1]))\r\n if (typeof result !== \"string\") {\r\n graphs.push({\r\n title: submission.name,\r\n dots: result as any as Dot[]\r\n })\r\n }\r\n }\r\n }\r\n this.setState({\r\n comparedGraphs: graphs,\r\n highlightedValues: []\r\n })\r\n }\r\n\r\n private async handleArchiveMultipleClick() {\r\n this.setState({\r\n showArchiveMultipleModal: true,\r\n comparedGraphs: []\r\n })\r\n }\r\n\r\n private async handleDuplicate() {\r\n if (AuthService.user?.sub && this.state.currentSubmission) {\r\n const data = await this.formService.submitForm(\"default\", {\r\n responses: (new ResponsesDTO(this.state.currentSubmission.responses)).responses,\r\n history: this.state.currentSubmission.history,\r\n name: \"\"\r\n })\r\n try {\r\n await this.submissionService.saveLastSubmission(data.id, this.state.duplicateSubmissionName)\r\n }\r\n catch (e) {\r\n this.toast?.show({\r\n severity: SeverityEnum.ERROR,\r\n detail: this.formService.t(this.props.t, \"ui_duplicate_name_error\", false, false),\r\n })\r\n }\r\n this._getSubmissions()\r\n this.setState({\r\n showDuplicateModal: false\r\n })\r\n }\r\n }\r\n\r\n private handleChangeName() {\r\n if (this.state.currentSubmission) {\r\n this.submissionService.changeSubmissionName(this.state.currentSubmission?._id, this.state.newSubmissionName)\r\n .then(() => {\r\n this.setState({\r\n showNameModal: false\r\n })\r\n this._getSubmissions()\r\n })\r\n }\r\n }\r\n\r\n private handleChangeDescription() {\r\n if (this.state.currentSubmission) {\r\n this.submissionService.changeSubmissionDescription(this.state.currentSubmission?._id, this.state.newSubmissionDescription)\r\n .then(() => {\r\n this.setState({\r\n showDescriptionModal: false\r\n })\r\n this._getSubmissions()\r\n })\r\n }\r\n }\r\n\r\n private handleGraphClick(graphs: Graph[]) {\r\n this.setState({\r\n highlightedValues: [...this.state.highlightedValues, ...this.getHighlightedValueForDatable(graphs)]\r\n })\r\n }\r\n\r\n private getHighlightedValueForDatable(graphs: Graph[]) {\r\n const hlValue = [...graphs]\r\n\r\n const validValue : any = []\r\n\r\n\r\n\r\n for (const graph of hlValue) {\r\n for (const dot of graph.dots) {\r\n const currentRow = validValue.find(v => v.x === dot.x)\r\n if (currentRow) {\r\n currentRow[graph.title] = Math.floor(dot.y) + \" kW\"\r\n }\r\n else {\r\n validValue.push({\r\n x: dot.x,\r\n [graph.title]: Math.floor(dot.y) + \" kW\"\r\n })\r\n }\r\n }\r\n }\r\n\r\n return validValue\r\n }\r\n\r\n private nameTemplate(props : Submission) {\r\n return (\r\n
    \r\n

    {props.name}

    \r\n {\r\n this.setState({\r\n showNameModal: true,\r\n currentSubmission: props\r\n })\r\n }}>\r\n
    \r\n )\r\n }\r\n\r\n private descriptionTemplate(props : Submission) {\r\n return (\r\n
    \r\n

    {props.description}

    \r\n {\r\n this.setState({\r\n newSubmissionDescription: props.description,\r\n showDescriptionModal: true,\r\n currentSubmission: props\r\n })\r\n }}>\r\n
    \r\n )\r\n }\r\n\r\n private actionButtonTemplate(props) {\r\n return (\r\n
    \r\n this.handleUpdateClick(props)}>\r\n this.handleResultClick(props)}>\r\n this.handleCloneClick(props)}>\r\n this.handleArchiveClick(props)}>\r\n this.handleDeleteClick(props)}>\r\n
    \r\n )\r\n }\r\n\r\n private dateTemplate(props: Submission) {\r\n return (new Date(props.submissionDate)).toLocaleDateString()\r\n }\r\n\r\n private resultTemplate(props: Submission, title: string) {\r\n let results: string = \"\"\r\n for (let r of props.results) {\r\n if (r.requirementTitle === title) {\r\n results = r.answer\r\n }\r\n }\r\n return this.formService.t(this.t, results, false)\r\n }\r\n\r\n private archiveModal() {\r\n return (\r\n this.setState({ showArchiveModal: false })}\r\n style={{ width: \"800px\" }}\r\n header={this.formService.t(this.t, \"ui_archive_submission_modal\", false)}\r\n >\r\n
    \r\n \r\n \r\n
    \r\n \r\n )\r\n }\r\n\r\n private archiveMultipleModal() {\r\n return (\r\n this.setState({ showArchiveMultipleModal: false })}\r\n style={{ width: \"800px\" }}\r\n header={this.formService.t(this.t, \"ui_archive_submissions_modal\", false)}\r\n >\r\n
    \r\n \r\n \r\n
    \r\n \r\n )\r\n }\r\n\r\n private deleteModal() {\r\n return (\r\n this.setState({ showDeleteModal: false })}\r\n style={{ width: \"800px\" }}\r\n header={this.formService.t(this.t, \"ui_delete_submission_modal\", false)}\r\n >\r\n
    \r\n \r\n \r\n
    \r\n \r\n )\r\n }\r\n\r\n private duplicateModal() {\r\n return (\r\n this.setState({ showDuplicateModal: false })}\r\n style={{ width: \"800px\" }}\r\n header={this.formService.t(this.t, \"ui_submission_name_dialog_header\", false)}\r\n >\r\n this.setState({ duplicateSubmissionName: e.target.value })}>\r\n
    \r\n \r\n
    \r\n \r\n )\r\n }\r\n\r\n private nameModal() {\r\n return (\r\n this.setState({ showNameModal: false })}\r\n style={{ width: \"800px\" }}\r\n header={this.formService.t(this.t, \"ui_submission_name_dialog_header\", false)}\r\n >\r\n this.setState({ newSubmissionName: e.target.value })}>\r\n
    \r\n \r\n
    \r\n \r\n )\r\n }\r\n\r\n private descriptionModal() {\r\n return (\r\n this.setState({ showDescriptionModal: false })}\r\n style={{ width: \"800px\" }}\r\n header={this.formService.t(this.t, \"ui_submission_description_dialog_header\", false)}\r\n >\r\n this.setState({ newSubmissionDescription: e.target.value })}>\r\n
    \r\n \r\n
    \r\n \r\n )\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n
    \r\n (this.toast = el)}/>\r\n {this.state.editState === \"OVERVIEW\" && (\r\n \r\n

    {this.formService.t(this.t, \"ui_user_page_title\", false)}

    \r\n \r\n \r\n
    \r\n
    \r\n \r\n {this.state.form?.type === FormType.GRAPH && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n this.setState({ showArchivedValue: e.checked })}>\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n ({ 'archived-submission': data.archived })} rows={20}\r\n value={this.state.showArchivedValue ? this.state.submissions : this.state.submissions.filter(s => s.archived === false)}\r\n selection={this.state.selectedSubmissions}\r\n onSelectionChange={(e) => this.setState({ selectedSubmissions: e.value })}\r\n >\r\n \r\n this.nameTemplate(props)}>\r\n this.descriptionTemplate(props)}>\r\n this.dateTemplate(props)} header={this.formService.t(this.t, \"date_header\", false)}>\r\n {(this.state.submissions.length > 0 && this.state.form?.type === FormType.GRAPH) && this.state.submissions[0].results.map(\r\n r => this.resultTemplate(props, r.requirementTitle)} header={this.formService.t(this.t, r.requirementTitle, false)}>\r\n )}\r\n this.actionButtonTemplate(props)}>\r\n \r\n {(this.state.comparedGraphs.length > 0) && (\r\n
    \r\n

    {this.formService.t(this.t, \"ui_compare_graph_title\", false)}

    \r\n \r\n {this.formService.t(this.t, \"ui_graph_compare_notes\", false)}\r\n \r\n this.handleGraphClick(graphs)}>\r\n {/*{(this.state.highlightedValues.length > 0 && this.state.comparedGraphs.length > 0) && (*/}\r\n {/* <>*/}\r\n {/* {this.state.highlightedValues.map(g => (*/}\r\n {/* <>*/}\r\n {/*

    {g.title} {g.dots.map(d => (

    {d.x} | {d.y}

    ))}

    */}\r\n {/* */}\r\n {/* ))}*/}\r\n {/* */}\r\n {/*)}*/}\r\n {(this.state.highlightedValues.length > 0 && this.state.comparedGraphs.length > 0) && (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n {this.state.selectedSubmissions.slice(0, 5).map(d => (\r\n \r\n ))}\r\n \r\n
    \r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n )}\r\n\r\n {(this.state.editState === \"UPDATE\" && this.state.currentSubmission) && (\r\n \r\n )}\r\n {(this.state.editState === \"RESULT\" && this.state.currentSubmission) && (\r\n \r\n )}\r\n {(this.state.editState === \"NEW\" && (\r\n \r\n ))}\r\n\r\n\r\n\r\n {this.archiveModal()}\r\n\r\n {this.archiveMultipleModal()}\r\n\r\n {this.deleteModal()}\r\n\r\n {this.duplicateModal()}\r\n\r\n {this.nameModal()}\r\n\r\n {this.descriptionModal()}\r\n
    \r\n );\r\n }\r\n\r\n\r\n\r\n}\r\n\r\nexport default withTranslation()(UserPage);\r\n","import i18n from \"i18next\";\r\nimport BrowserDetector from \"i18next-browser-languagedetector\";\r\nimport HttpApi, { BackendOptions } from \"i18next-http-backend\";\r\nimport React, { Component } from \"react\";\r\nimport CookieConsent from \"react-cookie-consent\";\r\nimport { initReactI18next, WithTranslation, withTranslation, } from \"react-i18next\";\r\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\r\nimport AdminPage from \"./admin/AdminPage\";\r\nimport FormPage from \"./form/FormPage\";\r\nimport MainLayout from \"./layout/MainLayout\";\r\nimport AdminRoute from \"./login/components/AdminRoute\";\r\nimport PrivateRoute from \"./login/components/PrivateRoute\";\r\nimport UserRoute from \"./login/components/UserRoute\";\r\nimport LoginPage from \"./login/LoginPage\";\r\nimport { FormService } from \"./form/services/FormService\";\r\nimport AnonymousPage from \"./login/AnonymousPage\";\r\nimport ReactGA from 'react-ga';\r\nimport { AdvertisingInfoResponse, Idfa } from \"@sparkfabrik/capacitor-plugin-idfa\";\r\nimport DecisionTreeEditorPage from \"./editor/DecisionTreeEditorPage\";\r\nimport { Capacitor } from \"@capacitor/core\";\r\nimport UserPage from \"./user/UserPage\"\r\n\r\ni18n\r\n .use(initReactI18next)\r\n .use(BrowserDetector)\r\n .use(HttpApi)\r\n .init({\r\n lng: process.env.REACT_APP_DEFAULT_LANGAGE === \"nl\" ? \"nl\" : \"fr\",\r\n fallbackLng: process.env.REACT_APP_DEFAULT_LANGAGE === \"nl\" ? \"nl\" : \"fr\",\r\n backend: {\r\n loadPath: `${process.env.REACT_APP_API_URL}/translations/{{lng}}`,\r\n } as BackendOptions,\r\n });\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\nclass App extends Component {\r\n\r\n private formService: FormService;\r\n private languagesMapping: any;\r\n private isMobile = Capacitor.isNativePlatform();\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.formService = new FormService();\r\n\r\n\r\n if (!this.isMobile) {\r\n const url = new URL(window.location.href);\r\n this.languagesMapping = {\r\n 'fr': process.env?.REACT_APP_URL_FR ? process.env?.REACT_APP_URL_FR : url.hostname,\r\n 'nl': process.env?.REACT_APP_URL_NL ? process.env?.REACT_APP_URL_NL : url.hostname,\r\n };\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.updateTitle();\r\n if (!this.isMobile) {\r\n this.initLanguage(this.props.i18n.language);\r\n }\r\n this.props.i18n.on(\"languageChanged\", this.updateTitle.bind(this));\r\n if (!this.isMobile) {\r\n this.props.i18n.on(\"languageChanged\", this.updateLanguage.bind(this));\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.props.i18n.off(\"languageChanged\", this.updateTitle.bind(this));\r\n if (!this.isMobile) {\r\n this.props.i18n.off(\"languageChanged\", this.updateLanguage.bind(this));\r\n }\r\n }\r\n\r\n initLanguage(language: string) {\r\n const url = new URL(window.location.href);\r\n\r\n if (url.searchParams.has('locale')) {\r\n const locale = url.searchParams.get('locale')!;\r\n if (this.languagesMapping.hasOwnProperty(locale) && this.languagesMapping[locale] === url.hostname) {\r\n this.props.i18n.changeLanguage(locale);\r\n return;\r\n }\r\n }\r\n\r\n const targetLanguage = Object.keys(this.languagesMapping).find(f => this.languagesMapping[f] === url.hostname);\r\n if (!targetLanguage) {\r\n url.hostname = this.languagesMapping[language];\r\n window.location.href = url.toString();\r\n return;\r\n }\r\n\r\n if (process.env.REACT_APP_DEFAULT_LANGAGE === \"nl\") {\r\n this.props.i18n.changeLanguage(\"nl\")\r\n return\r\n }\r\n\r\n if (language !== targetLanguage) {\r\n this.props.i18n.changeLanguage(targetLanguage!.toString());\r\n }\r\n }\r\n\r\n updateLanguage(language: string) {\r\n const url = new URL(window.location.href);\r\n let targetLanguage = Object.keys(this.languagesMapping).find(f => this.languagesMapping[f] === url.hostname);\r\n\r\n if (url.searchParams.has('locale')) {\r\n const locale = url.searchParams.get('locale')!;\r\n if (this.languagesMapping.hasOwnProperty(locale) && this.languagesMapping[locale] === url.hostname) {\r\n targetLanguage = locale;\r\n }\r\n }\r\n\r\n if (!targetLanguage) {\r\n return;\r\n }\r\n\r\n if (language === targetLanguage) {\r\n return;\r\n }\r\n\r\n url.hostname = this.languagesMapping[language];\r\n url.searchParams.set('locale', language);\r\n window.location.href = url.toString();\r\n }\r\n\r\n updateTitle() {\r\n document.title = this.formService.t(this.props.t, 'title_app', false, true);\r\n const favicon = document.getElementById(\"favicon\");\r\n if (favicon) {\r\n (favicon as HTMLLinkElement).href = this.formService.t(this.props.t, 'favicon', false, false, false, true);\r\n }\r\n }\r\n\r\n render() {\r\n if (process.env[\"REACT_APP_GA_ID\"]) {\r\n Idfa.getAdvertisingInfo().then((response: AdvertisingInfoResponse) => {\r\n if (Capacitor.getPlatform() !== 'web' && response.isAdTrackingLimited) {\r\n console.log('ReactGA will not be initialized');\r\n }\r\n else {\r\n console.log('ReactGA.initialize');\r\n ReactGA.initialize(process.env[\"REACT_APP_GA_ID\"] as string);\r\n }\r\n }).catch((err: Error) => {\r\n console.error(err);\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Capacitor.isNativePlatform() ? '' :\r\n \r\n {this.formService.t(this.props.t, 'cookie_consent_text', true)}\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation()(App);\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n process.env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport \"./FormLoading.scss\";\r\n\r\ninterface Props {\r\n}\r\n\r\nclass FormLoading extends Component {\r\n constructor(props: Props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n

    Please wait while the app is loading …

    \r\n

    This can take up to 30 seconds.

    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default (FormLoading);\r\n","import { WithTranslation, withTranslation } from \"react-i18next\";\r\nimport { TFunction } from \"i18next\";\r\nimport { FormService } from \"../services/FormService\";\r\nimport React from \"react\";\r\nimport { Modal } from \"@bbri/ui\";\r\nimport \"./NoConnectionModal.scss\";\r\n\r\ninterface Props extends WithTranslation {\r\n}\r\n\r\nclass NoConnectionModal extends React.Component {\r\n\r\n private t: TFunction;\r\n private formService: FormService;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.t = this.props.t;\r\n this.formService = new FormService();\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n

    {(this.formService.t(this.t, \"no_connection\", false) !== 'no_connection') ?\r\n (this.formService.t(this.t, \"no_connection\", false)) :\r\n 'No Internet connection. Please connect.'}

    \r\n
    \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withTranslation()(NoConnectionModal);\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./App\";\r\nimport * as serviceWorker from \"./serviceWorker\";\r\nimport \"./styles/global.scss\";\r\nimport FormLoading from \"./form/components/FormLoading\";\r\nimport {Offline} from \"react-detect-offline\";\r\nimport NoConnectionModal from \"./form/components/NoConnectionModal\";\r\nimport {Network} from \"@capacitor/network\";\r\nimport { PublicClientApplication } from \"@azure/msal-browser\";\r\nimport { MsalProvider } from \"@azure/msal-react\";\r\nimport { msalConfig } from \"./shared/config/ssoAuthConfig\";\r\n\r\nconst msalInstance = new PublicClientApplication(msalConfig);\r\n\r\nconst apiUrl = process.env.REACT_APP_API_URL\r\n\r\nReactDOM.render(\r\n ,\r\n document.getElementById(\"root\")\r\n)\r\n\r\nNetwork.addListener('networkStatusChange', status => {\r\n if (status.connected) {\r\n window.location.reload();\r\n return;\r\n } else {\r\n ReactDOM.render(\r\n }>\r\n {\r\n \r\n }\r\n ,\r\n document.getElementById(\"root\")\r\n )\r\n }\r\n});\r\n\r\nNetwork.getStatus().then(status => {\r\n if (status.connected) {\r\n ReactDOM.render(\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n {\r\n \r\n }\r\n ,\r\n document.getElementById(\"root\")\r\n )\r\n } else {\r\n ReactDOM.render(\r\n }>\r\n {\r\n \r\n }\r\n ,\r\n document.getElementById(\"root\")\r\n )\r\n }\r\n});\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}