|  |  | @ -2,9 +2,12 @@ package com.epmet.service.evaluationindex.extract.todata.impl; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | import com.alibaba.fastjson.JSON; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.constant.NumConstant; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.ConvertUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.commons.tools.utils.DateUtils; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.extract.form.ExtractOriginFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.dto.stats.form.CustomerIdAndDateIdFormDTO; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.evaluationindex.extract.todata.*; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.stats.DimCustomerPartymemberService; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.service.stats.DimCustomerService; | 
			
		
	
		
			
				
					|  |  |  | import com.epmet.util.DimIdGenerator; | 
			
		
	
		
			
				
					|  |  |  | import com.google.common.util.concurrent.ThreadFactoryBuilder; | 
			
		
	
	
		
			
				
					|  |  | @ -41,12 +44,14 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService { | 
			
		
	
		
			
				
					|  |  |  |     private DimCustomerService dimCustomerService; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private GroupExtractService groupExtractService; | 
			
		
	
		
			
				
					|  |  |  |     @Autowired | 
			
		
	
		
			
				
					|  |  |  |     private DimCustomerPartymemberService dimCustomerPartymemberService; | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |     public void extractAll(ExtractOriginFormDTO extractOriginFormDTO) { | 
			
		
	
		
			
				
					|  |  |  |         String customerId = extractOriginFormDTO.getCustomerId(); | 
			
		
	
		
			
				
					|  |  |  |         if (StringUtils.isBlank(extractOriginFormDTO.getStartDate())||StringUtils.isBlank(extractOriginFormDTO.getEndDate())) { | 
			
		
	
		
			
				
					|  |  |  |         if (StringUtils.isBlank(extractOriginFormDTO.getDateId()) && (StringUtils.isBlank(extractOriginFormDTO.getStartDate()) && StringUtils.isBlank(extractOriginFormDTO.getEndDate()))) { | 
			
		
	
		
			
				
					|  |  |  |             //如果没有设置开始日期、结束日期,默认查询昨天
 | 
			
		
	
		
			
				
					|  |  |  |             extractOriginFormDTO.setDateId(DimIdGenerator.getDateDimId(DateUtils.addDateDays(new Date(), -1))); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
	
		
			
				
					|  |  | @ -77,116 +82,142 @@ public class FactOriginExtractServiceImpl implements FactOriginExtractService { | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     private void submitJob(ExtractOriginFormDTO param) { | 
			
		
	
		
			
				
					|  |  |  |         boolean isRange = StringUtils.isBlank(param.getDateId()) ? true : false; | 
			
		
	
		
			
				
					|  |  |  |         List<String> daysBetween = null; | 
			
		
	
		
			
				
					|  |  |  |         if (isRange) { | 
			
		
	
		
			
				
					|  |  |  |             daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); | 
			
		
	
		
			
				
					|  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |         List<String> finalDaysBetween = daysBetween; | 
			
		
	
		
			
				
					|  |  |  |         threadPool.submit(() -> { | 
			
		
	
		
			
				
					|  |  |  |             CustomerIdAndDateIdFormDTO formDTO = new CustomerIdAndDateIdFormDTO(); | 
			
		
	
		
			
				
					|  |  |  |             formDTO.setCustomerId(param.getCustomerId()); | 
			
		
	
		
			
				
					|  |  |  |             if (!isRange) { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     formDTO.setDateId(param.getDateId()); | 
			
		
	
		
			
				
					|  |  |  |                     dimCustomerPartymemberService.statsPartyMember(formDTO); | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【党员数据】发生异常,参数:" + JSON.toJSONString(formDTO), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < finalDaysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = finalDaysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         formDTO.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         dimCustomerPartymemberService.statsPartyMember(formDTO); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【党员数据】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |         threadPool.submit(() -> { | 
			
		
	
		
			
				
					|  |  |  |             if(StringUtils.isNotBlank(param.getDateId())){ | 
			
		
	
		
			
				
					|  |  |  |             ExtractOriginFormDTO paramNew = ConvertUtils.sourceToTarget(param, ExtractOriginFormDTO.class); | 
			
		
	
		
			
				
					|  |  |  |             if (!isRange) { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     groupExtractService.extractGroupData(param); | 
			
		
	
		
			
				
					|  |  |  |                     groupExtractService.extractGroupData(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【小组数据】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【小组数据】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             }else if(StringUtils.isNotBlank(param.getStartDate()) && StringUtils.isNotBlank(param.getEndDate())){ | 
			
		
	
		
			
				
					|  |  |  |                 try{ | 
			
		
	
		
			
				
					|  |  |  |                     List<String> daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < daysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = daysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         param.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         groupExtractService.extractGroupData(param); | 
			
		
	
		
			
				
					|  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < finalDaysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = finalDaysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         paramNew.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         groupExtractService.extractGroupData(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 }catch(Exception e){ | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【小组数据】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【小组数据】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |         threadPool.submit(() -> { | 
			
		
	
		
			
				
					|  |  |  |             log.info("extractAll start param:{}", JSON.toJSONString(param)); | 
			
		
	
		
			
				
					|  |  |  |             if(StringUtils.isNotBlank(param.getDateId())){ | 
			
		
	
		
			
				
					|  |  |  |             log.debug("extractAll start param:{}", JSON.toJSONString(param)); | 
			
		
	
		
			
				
					|  |  |  |             ExtractOriginFormDTO paramNew = ConvertUtils.sourceToTarget(param, ExtractOriginFormDTO.class); | 
			
		
	
		
			
				
					|  |  |  |             if (!isRange) { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     factOriginTopicMainDailyService.topicCleaning(param); | 
			
		
	
		
			
				
					|  |  |  |                     factOriginTopicMainDailyService.topicCleaning(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【话题数据】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【话题数据】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             }else if(StringUtils.isNotBlank(param.getStartDate()) && StringUtils.isNotBlank(param.getEndDate())){ | 
			
		
	
		
			
				
					|  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     List<String> daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < daysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = daysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         param.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         log.info("extractAll cal param:{}", JSON.toJSONString(param)); | 
			
		
	
		
			
				
					|  |  |  |                         factOriginTopicMainDailyService.topicCleaning(param); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < finalDaysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = finalDaysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         paramNew.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         log.info("extractAll cal param:{}", JSON.toJSONString(paramNew)); | 
			
		
	
		
			
				
					|  |  |  |                         factOriginTopicMainDailyService.topicCleaning(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【话题数据】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【话题数据】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |             log.info("extractAll end param:{}", JSON.toJSONString(param)); | 
			
		
	
		
			
				
					|  |  |  |             log.info("extractAll end param:{}", JSON.toJSONString(paramNew)); | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |         threadPool.submit(() -> { | 
			
		
	
		
			
				
					|  |  |  |             if(StringUtils.isNotBlank(param.getDateId())){ | 
			
		
	
		
			
				
					|  |  |  |             ExtractOriginFormDTO paramNew = ConvertUtils.sourceToTarget(param, ExtractOriginFormDTO.class); | 
			
		
	
		
			
				
					|  |  |  |             if (!isRange) { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     issueExtractService.issueExtractMain(param); | 
			
		
	
		
			
				
					|  |  |  |                     issueExtractService.issueExtractMain(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【议题数据主表】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【议题数据主表】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     issueExtractService.issueExtractLog(param); | 
			
		
	
		
			
				
					|  |  |  |                     issueExtractService.issueExtractLog(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【议题数据附表】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【议题数据附表】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             }else if(StringUtils.isNotBlank(param.getStartDate()) && StringUtils.isNotBlank(param.getEndDate())){ | 
			
		
	
		
			
				
					|  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     List<String> daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < daysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = daysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         param.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         issueExtractService.issueExtractMain(param); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < finalDaysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = finalDaysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         paramNew.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         issueExtractService.issueExtractMain(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【议题数据主表】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【议题数据主表】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     List<String> daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < daysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = daysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         param.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         issueExtractService.issueExtractLog(param); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < finalDaysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = finalDaysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         paramNew.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         issueExtractService.issueExtractLog(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【议题数据附表】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【议题数据附表】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |         threadPool.submit(() -> { | 
			
		
	
		
			
				
					|  |  |  |             if(StringUtils.isNotBlank(param.getDateId())){ | 
			
		
	
		
			
				
					|  |  |  |             ExtractOriginFormDTO paramNew = ConvertUtils.sourceToTarget(param, ExtractOriginFormDTO.class); | 
			
		
	
		
			
				
					|  |  |  |             if (!isRange) { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     projectExtractService.saveOriginProjectDaily(param); | 
			
		
	
		
			
				
					|  |  |  |                     projectExtractService.saveOriginProjectDaily(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【项目数据】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【项目数据】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     projectExtractService.extractProjectPeriodData(param); | 
			
		
	
		
			
				
					|  |  |  |                     projectExtractService.extractProjectPeriodData(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【项目数据】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【项目数据】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             }else if(StringUtils.isNotBlank(param.getStartDate()) && StringUtils.isNotBlank(param.getEndDate())){ | 
			
		
	
		
			
				
					|  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     List<String> daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < daysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = daysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         param.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         projectExtractService.saveOriginProjectDaily(param); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < finalDaysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = finalDaysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         paramNew.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         projectExtractService.saveOriginProjectDaily(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【项目数据】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【项目数据】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |                     List<String> daysBetween = DateUtils.getDaysBetween(param.getStartDate(), param.getEndDate()); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < daysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = daysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         param.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         projectExtractService.extractProjectPeriodData(param); | 
			
		
	
		
			
				
					|  |  |  |                     for (int i = 0; i < finalDaysBetween.size(); i++) { | 
			
		
	
		
			
				
					|  |  |  |                         String dateDimId = finalDaysBetween.get(i); | 
			
		
	
		
			
				
					|  |  |  |                         paramNew.setDateId(dateDimId); | 
			
		
	
		
			
				
					|  |  |  |                         projectExtractService.extractProjectPeriodData(paramNew); | 
			
		
	
		
			
				
					|  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |                 } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【项目数据】发生异常,参数:" + JSON.toJSONString(param), e); | 
			
		
	
		
			
				
					|  |  |  |                     log.error("抽取【项目数据】发生异常,参数:" + JSON.toJSONString(paramNew), e); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |         }); | 
			
		
	
	
		
			
				
					|  |  | 
 |