From b8c846e081da5791f48e371e7f50548be27a7767 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Mon, 10 Sep 2007 22:41:44 +0000 Subject: [PATCH] Merged V2.1 to HEAD 6455: OpenOffice transformer and extractor register regardless of the initial connection state. 6456: Fix for WCM-636 (Clicking OK twice while deleting web project results in exception) 6457: Updated installers and associated config 6458: AR-1669 Add getQnamePath to Javascript 6459: Fix for AWC-1456 - Word and Excel documents were being stored as octet streams rather than their correct mimetype 6460: Reverse order of reject & approve transitions, so that approve appears first in list of ui actions. 6461: Removed Process.exe (often detected as a virus) and updated config wizard. 6462: Switch to synchronous indexing for AVM by default 6463: Better support to query the state of AVM indexes 6464: Added Office 2007 document mimetypes and icons 6465: Added Office 2007 icons without the typo this time git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6736 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/messages/webclient.properties | 1 + .../web/bean/forums/DeleteForumDialog.java | 19 +--- .../web/bean/forums/DeleteTopicDialog.java | 19 +--- .../web/bean/spaces/DeleteSpaceDialog.java | 21 +++- .../web/bean/wcm/DeleteWebsiteDialog.java | 105 +++++++++--------- source/web/images/filetypes/docx.gif | Bin 0 -> 573 bytes source/web/images/filetypes/docx.png | Bin 0 -> 3309 bytes source/web/images/filetypes/pptx.gif | Bin 0 -> 574 bytes source/web/images/filetypes/pptx.png | Bin 0 -> 3334 bytes source/web/images/filetypes/xlsx.gif | Bin 0 -> 574 bytes source/web/images/filetypes/xlsx.png | Bin 0 -> 3348 bytes source/web/images/filetypes/xslx.gif | Bin 0 -> 574 bytes source/web/images/filetypes/xslx.png | Bin 0 -> 3348 bytes source/web/images/filetypes32/docx.gif | Bin 0 -> 967 bytes source/web/images/filetypes32/pptx.gif | Bin 0 -> 1006 bytes source/web/images/filetypes64/docx.png | Bin 0 -> 6969 bytes source/web/images/filetypes64/pptx.png | Bin 0 -> 6011 bytes 17 files changed, 78 insertions(+), 87 deletions(-) create mode 100644 source/web/images/filetypes/docx.gif create mode 100644 source/web/images/filetypes/docx.png create mode 100644 source/web/images/filetypes/pptx.gif create mode 100644 source/web/images/filetypes/pptx.png create mode 100644 source/web/images/filetypes/xlsx.gif create mode 100644 source/web/images/filetypes/xlsx.png create mode 100644 source/web/images/filetypes/xslx.gif create mode 100644 source/web/images/filetypes/xslx.png create mode 100644 source/web/images/filetypes32/docx.gif create mode 100644 source/web/images/filetypes32/pptx.gif create mode 100644 source/web/images/filetypes64/docx.png create mode 100644 source/web/images/filetypes64/pptx.png diff --git a/config/alfresco/messages/webclient.properties b/config/alfresco/messages/webclient.properties index 9dc5eeb5f6..278dc22ad7 100644 --- a/config/alfresco/messages/webclient.properties +++ b/config/alfresco/messages/webclient.properties @@ -1735,6 +1735,7 @@ delete_user_confirm=The User will no longer be able to access the system. Are yo remove_invited_user_confirm=The User will no longer be able to access the documents and folders in this space. Are you sure you want to remove user \"{0}\"? remove_content_user_confirm=The User will no longer be able to access this content. Are you sure you want to remove user \"{0}\"? delete_companyroot_confirm=WARNING: This folder is a special folder accessed by all Users! Please be sure that you wish to delete this folder. It may cause System Errors if you remove it. +delete_node_not_found=The item you are trying to delete can not be found, this may be because it has already been deleted. Please close this dialog and try the delete operation again. # Status Messages status_space_created=Successfully created space ''{0}''. diff --git a/source/java/org/alfresco/web/bean/forums/DeleteForumDialog.java b/source/java/org/alfresco/web/bean/forums/DeleteForumDialog.java index 22127ae70c..a9a0db8590 100644 --- a/source/java/org/alfresco/web/bean/forums/DeleteForumDialog.java +++ b/source/java/org/alfresco/web/bean/forums/DeleteForumDialog.java @@ -24,7 +24,6 @@ */ package org.alfresco.web.bean.forums; -import java.text.MessageFormat; import java.util.Map; import javax.faces.context.FacesContext; @@ -34,7 +33,6 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.web.app.AlfrescoNavigationHandler; -import org.alfresco.web.app.Application; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.spaces.DeleteSpaceDialog; @@ -108,20 +106,15 @@ public class DeleteForumDialog extends DeleteSpaceDialog } } - // ------------------------------------------------------------------------------ - // Bean Getters and Setters - /** - * Returns the confirmation to display to the user before deleting the content. + * Returns the message bundle id of the confirmation message to display to + * the user before deleting the forum. * - * @return The formatted message to display + * @return The message bundle id */ - public String getConfirmMessage() + @Override + protected String getConfirmMessageId() { - String fileConfirmMsg = Application.getMessage(FacesContext.getCurrentInstance(), - "delete_forum_confirm"); - - return MessageFormat.format(fileConfirmMsg, - new Object[] {this.browseBean.getActionSpace().getName()}); + return "delete_forum_confirm"; } } diff --git a/source/java/org/alfresco/web/bean/forums/DeleteTopicDialog.java b/source/java/org/alfresco/web/bean/forums/DeleteTopicDialog.java index ac83d4d019..6d1f917a9c 100644 --- a/source/java/org/alfresco/web/bean/forums/DeleteTopicDialog.java +++ b/source/java/org/alfresco/web/bean/forums/DeleteTopicDialog.java @@ -24,7 +24,6 @@ */ package org.alfresco.web.bean.forums; -import java.text.MessageFormat; import java.util.Map; import javax.faces.context.FacesContext; @@ -34,7 +33,6 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; import org.alfresco.web.app.AlfrescoNavigationHandler; -import org.alfresco.web.app.Application; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.spaces.DeleteSpaceDialog; @@ -94,20 +92,15 @@ public class DeleteTopicDialog extends DeleteSpaceDialog } } - // ------------------------------------------------------------------------------ - // Bean Getters and Setters - /** - * Returns the confirmation to display to the user before deleting the content. + * Returns the message bundle id of the confirmation message to display to + * the user before deleting the topic. * - * @return The formatted message to display + * @return The message bundle id */ - public String getConfirmMessage() + @Override + protected String getConfirmMessageId() { - String fileConfirmMsg = Application.getMessage(FacesContext.getCurrentInstance(), - "delete_topic_confirm"); - - return MessageFormat.format(fileConfirmMsg, - new Object[] {this.browseBean.getActionSpace().getName()}); + return "delete_topic_confirm"; } } diff --git a/source/java/org/alfresco/web/bean/spaces/DeleteSpaceDialog.java b/source/java/org/alfresco/web/bean/spaces/DeleteSpaceDialog.java index effe201522..0dc95e5e2b 100644 --- a/source/java/org/alfresco/web/bean/spaces/DeleteSpaceDialog.java +++ b/source/java/org/alfresco/web/bean/spaces/DeleteSpaceDialog.java @@ -28,7 +28,6 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.List; -import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.transaction.UserTransaction; @@ -43,10 +42,8 @@ import org.alfresco.web.app.AlfrescoNavigationHandler; import org.alfresco.web.app.Application; import org.alfresco.web.bean.content.DeleteContentDialog; import org.alfresco.web.bean.dialog.BaseDialogBean; -import org.alfresco.web.bean.repository.MapNode; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.repository.Repository; -import org.alfresco.web.ui.common.Utils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -205,6 +202,10 @@ public class DeleteSpaceDialog extends BaseDialogBean return false; } + protected String getConfirmMessageId() + { + return "delete_space_confirm"; + } // ------------------------------------------------------------------------------ // Bean Getters and Setters @@ -217,10 +218,18 @@ public class DeleteSpaceDialog extends BaseDialogBean public String getConfirmMessage() { String fileConfirmMsg = Application.getMessage(FacesContext.getCurrentInstance(), - "delete_space_confirm"); + getConfirmMessageId()); - return MessageFormat.format(fileConfirmMsg, - new Object[] {this.browseBean.getActionSpace().getName()}); + Node node = this.browseBean.getActionSpace(); + if (node != null) + { + return MessageFormat.format(fileConfirmMsg, new Object[] {node.getName()}); + } + else + { + return Application.getMessage(FacesContext.getCurrentInstance(), + "delete_node_not_found"); + } } /** diff --git a/source/java/org/alfresco/web/bean/wcm/DeleteWebsiteDialog.java b/source/java/org/alfresco/web/bean/wcm/DeleteWebsiteDialog.java index 7cf6b0c273..fcab9e1696 100644 --- a/source/java/org/alfresco/web/bean/wcm/DeleteWebsiteDialog.java +++ b/source/java/org/alfresco/web/bean/wcm/DeleteWebsiteDialog.java @@ -24,7 +24,6 @@ */ package org.alfresco.web.bean.wcm; -import java.text.MessageFormat; import java.util.List; import javax.faces.context.FacesContext; @@ -33,7 +32,6 @@ import org.alfresco.model.WCMAppModel; import org.alfresco.service.cmr.avm.AVMService; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.namespace.RegexQNamePattern; -import org.alfresco.web.app.Application; import org.alfresco.web.bean.repository.Node; import org.alfresco.web.bean.spaces.DeleteSpaceDialog; @@ -70,52 +68,55 @@ public class DeleteWebsiteDialog extends DeleteSpaceDialog { Node websiteNode = this.browseBean.getActionSpace(); - // delete all attached website sandboxes in reverse order to the layering - String storeRoot = (String)websiteNode.getProperties().get(WCMAppModel.PROP_AVMSTORE); - - // Notifiy virtualization server about removing this website - // - // Implementation note: - // - // Because the removal of virtual webapps in the virtualization - // server is recursive, it only needs to be given the name of - // the main staging store. - // - // This notification must occur *prior* to purging content - // within the AVM because the virtualization server must list - // the avm_webapps dir in each store to discover which - // virtual webapps must be unloaded. The virtualization - // server traverses the sandbox's stores in most-to-least - // dependent order, so clients don't have to worry about - // accessing a preview layer whose main layer has been torn - // out from under it. - // - // It does not matter what webapp name we give here, so "/ROOT" - // is as sensible as anything else. It's all going away. - - String sandbox = AVMUtil.buildStagingStoreName(storeRoot); - String path = AVMUtil.buildStoreWebappPath(sandbox, "/ROOT"); - AVMUtil.removeVServerWebapp(path, true); - - - // get the list of users who have a sandbox in the website - List userInfoRefs = nodeService.getChildAssocs( - websiteNode.getNodeRef(), WCMAppModel.ASSOC_WEBUSER, RegexQNamePattern.MATCH_ALL); - for (ChildAssociationRef ref : userInfoRefs) + if (websiteNode != null) { - String username = (String)nodeService.getProperty(ref.getChildRef(), WCMAppModel.PROP_WEBUSERNAME); + // delete all attached website sandboxes in reverse order to the layering + String storeRoot = (String)websiteNode.getProperties().get(WCMAppModel.PROP_AVMSTORE); + + // Notifiy virtualization server about removing this website + // + // Implementation note: + // + // Because the removal of virtual webapps in the virtualization + // server is recursive, it only needs to be given the name of + // the main staging store. + // + // This notification must occur *prior* to purging content + // within the AVM because the virtualization server must list + // the avm_webapps dir in each store to discover which + // virtual webapps must be unloaded. The virtualization + // server traverses the sandbox's stores in most-to-least + // dependent order, so clients don't have to worry about + // accessing a preview layer whose main layer has been torn + // out from under it. + // + // It does not matter what webapp name we give here, so "/ROOT" + // is as sensible as anything else. It's all going away. + + String sandbox = AVMUtil.buildStagingStoreName(storeRoot); + String path = AVMUtil.buildStoreWebappPath(sandbox, "/ROOT"); + AVMUtil.removeVServerWebapp(path, true); + - // delete the preview store for this user - deleteStore(AVMUtil.buildUserPreviewStoreName(storeRoot, username)); + // get the list of users who have a sandbox in the website + List userInfoRefs = nodeService.getChildAssocs( + websiteNode.getNodeRef(), WCMAppModel.ASSOC_WEBUSER, RegexQNamePattern.MATCH_ALL); + for (ChildAssociationRef ref : userInfoRefs) + { + String username = (String)nodeService.getProperty(ref.getChildRef(), WCMAppModel.PROP_WEBUSERNAME); + + // delete the preview store for this user + deleteStore(AVMUtil.buildUserPreviewStoreName(storeRoot, username)); + + // delete the main store for this user + deleteStore(AVMUtil.buildUserMainStoreName(storeRoot, username)); + } - // delete the main store for this user - deleteStore(AVMUtil.buildUserMainStoreName(storeRoot, username)); + // remove the main staging and preview stores + deleteStore(AVMUtil.buildStagingPreviewStoreName(storeRoot)); + deleteStore(AVMUtil.buildStagingStoreName(storeRoot)); } - // remove the main staging and preview stores - deleteStore(AVMUtil.buildStagingPreviewStoreName(storeRoot)); - deleteStore(AVMUtil.buildStagingStoreName(storeRoot)); - // use the super implementation to delete the node itself return super.finishImpl(context, outcome); } @@ -134,21 +135,15 @@ public class DeleteWebsiteDialog extends DeleteSpaceDialog } } - - // ------------------------------------------------------------------------------ - // Bean Getters and Setters - /** - * Returns the confirmation to display to the user before deleting the content. + * Returns the message bundle id of the confirmation message to display to + * the user before deleting the website. * - * @return The formatted message to display + * @return The message bundle id */ - public String getConfirmMessage() + @Override + protected String getConfirmMessageId() { - String fileConfirmMsg = Application.getMessage(FacesContext.getCurrentInstance(), - "delete_website_confirm"); - - return MessageFormat.format(fileConfirmMsg, - new Object[] {this.browseBean.getActionSpace().getName()}); + return "delete_website_confirm"; } } diff --git a/source/web/images/filetypes/docx.gif b/source/web/images/filetypes/docx.gif new file mode 100644 index 0000000000000000000000000000000000000000..93143faf630a30e0bae36f71c1bdcf7461fec0a9 GIT binary patch literal 573 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 literal 0 HcmV?d00001 diff --git a/source/web/images/filetypes/pptx.gif b/source/web/images/filetypes/pptx.gif new file mode 100644 index 0000000000000000000000000000000000000000..adf91acbe46f4cfb5ad9733f347631b5203140ea GIT binary patch literal 574 zcmZ?wbhEHb6krfwcox9$=iQ6TmoNYL@#F8`zhA$8ef;?G+qZ8&efo6m+O-D{9!!#B z`}gnPyLa#2zkmPd&!0<|F8%!Z^Z4=O-@bjjd-rZ=Xz1d_i(kKdapcI6y?gggnKbF{ zts66EOn>s^$?F%-zkK?1;pEYGZ(g^wv~1e6>HGKZZy((~apJ_$!-t+ff4*nWp8oF6 zd2{DJd-m+mp+g&1uWV^*yn6B6(xpq|Y;QojA z@4tQhx@q-_moH!T_jJE_@nXV+35({>TfThxisj2DYl}X5^r*AFZQG`euU@_S_xj2C z^XCsAK745J?o&q(zq4YPB+2j}3>XFzQ2fcl$iNW5paXIgC{7sIXEy{i1+Xh?GjcF8 zy4W!_H}SBtu?sQra(a512=|M#Ftge4@Cq=yi-Tnw|s!EtKu_zfTHap62tMdzL zaPXP38rTQ;9Y5j6<;->RgulP9?}f`(F8Uw8e);yrOBZk6d3ewF=G`l|A3u2f`ue$d z@6?>M+~idlzJHgr><_S#@^&zLv%`?tlb`#KTxG?@MIGHD7D8Su2bUaP;J{!F06b0j AkN^Mx literal 0 HcmV?d00001 diff --git a/source/web/images/filetypes/pptx.png b/source/web/images/filetypes/pptx.png new file mode 100644 index 0000000000000000000000000000000000000000..df5799ec5f33335190e47632ff0ddaa2b2f4ff30 GIT binary patch literal 3334 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 Q7XSbN07*qoM6N<$g4wV&#Q*>R literal 0 HcmV?d00001 diff --git a/source/web/images/filetypes/xlsx.gif b/source/web/images/filetypes/xlsx.gif new file mode 100644 index 0000000000000000000000000000000000000000..033d9e5e96666439a42c098ce81f836ad2b35bb2 GIT binary patch literal 574 zcmZ?wbhEHb6krfwcoxX;=Ff}EmoNYL@#E8{PhY=&ef#$9MnZd(4oVJ z55Ii*^2O`tt2V9Z?(bZ^VdbSumzFMF`sB%zPhUR0c>QAU-o3A0y?XHWZc9tc`w#Cg zTs?Q_{Jy#K<~Fr7zIgGXr@wpCwvCGyFTQ#A#?+}(U;TU1-r2Ti&z|ScpU+=3@9y2Z z%a<=ddg}0m2@}}t*chxB96Qbbg8{>!0g69a7#SD>8FWA{0>udf`|O6mra)#TRYnd* zMgcpf<|b}7R%Ssa9!_yBXU~3V7Is!`ZXPjqGZDvTPE9U8MrBi3CKh>7i)Jq)E_VYV zHx6}PHbb94zvCzTd^IFbo(S;2aKZoLrHjWeUb%evmj8|0S8m?DfA`^oVePQo4zTW%a|Ji#yZNAB!}kBdC`#TA9TYBsbSUEsiA4FJW% B`6>Va literal 0 HcmV?d00001 diff --git a/source/web/images/filetypes/xlsx.png b/source/web/images/filetypes/xlsx.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9453f004f0b88e468195f496d34af28a54a722 GIT binary patch literal 3348 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 literal 0 HcmV?d00001 diff --git a/source/web/images/filetypes/xslx.gif b/source/web/images/filetypes/xslx.gif new file mode 100644 index 0000000000000000000000000000000000000000..033d9e5e96666439a42c098ce81f836ad2b35bb2 GIT binary patch literal 574 zcmZ?wbhEHb6krfwcoxX;=Ff}EmoNYL@#E8{PhY=&ef#$9MnZd(4oVJ z55Ii*^2O`tt2V9Z?(bZ^VdbSumzFMF`sB%zPhUR0c>QAU-o3A0y?XHWZc9tc`w#Cg zTs?Q_{Jy#K<~Fr7zIgGXr@wpCwvCGyFTQ#A#?+}(U;TU1-r2Ti&z|ScpU+=3@9y2Z z%a<=ddg}0m2@}}t*chxB96Qbbg8{>!0g69a7#SD>8FWA{0>udf`|O6mra)#TRYnd* zMgcpf<|b}7R%Ssa9!_yBXU~3V7Is!`ZXPjqGZDvTPE9U8MrBi3CKh>7i)Jq)E_VYV zHx6}PHbb94zvCzTd^IFbo(S;2aKZoLrHjWeUb%evmj8|0S8m?DfA`^oVePQo4zTW%a|Ji#yZNAB!}kBdC`#TA9TYBsbSUEsiA4FJW% B`6>Va literal 0 HcmV?d00001 diff --git a/source/web/images/filetypes/xslx.png b/source/web/images/filetypes/xslx.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9453f004f0b88e468195f496d34af28a54a722 GIT binary patch literal 3348 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 literal 0 HcmV?d00001 diff --git a/source/web/images/filetypes32/docx.gif b/source/web/images/filetypes32/docx.gif new file mode 100644 index 0000000000000000000000000000000000000000..ff90a73abb7fcb4a70863759408dd723f67e7e97 GIT binary patch literal 967 zcmV;&133IgNk%w1VITk?0Oo%H$;rv<>-Dy{y!7<+xVgF9lqm*V~DSiKeNo=;-L$+}?tMg6Q)9^7QuI-QA(1rJ0$T+1c5RjgI#E|MB(uUS3}2 z=H}qw;Qamm^!fk!`upGQ|DmFz;p61Izrt&4Ywh*_?Ck9E@$u{H>-zfo`1ttm@9*yJ z?)mxo?d|RA>gx0J^YZfY%*@R2@bK#M|Nj2}?DhZK+uMGAev6BY_4W0KhliV;pPrzi z`}_NrmY3Gv=$DzC>FMgYy1c)?&febX(b3hPpP%IF@$B;d*4NqS@cHrh|M&Ozxx2*D z*x&g2{O#@T$jH_8`v2hX|KH%@(AC_?$lmDe@4LLc>g(&<-r@QA`qI+k)YR#sq@|^$ zrPu5K(AM4T^!|s3i1_&V)YSjn-2dwG{I|Ea03(_-W5NIb|NsC0A^8LW004ggEC2ui z03ZM$000O7fPaF6goTEOh=n*DAVD}jIXOc)MLj(}K$$`rCy9bQB|JPoJ5W$NJP1NL zJwQ4-I6NXO7oH_Kemg&+UjsQlI6<#CIzt?^7oCSg3Vwb+2wzM&IxQ|q3PeQ2LRl9S z4mOAqJB1@i3xpHJagAzP| z0fW!P$)6*K_9NL3W26kxLu*O?BkSU zpLW84xbfZ4k(Y*!8Nre|H*OS<&0X?}=+Jv(mT(|@cF)d0rx(3m{2vPs%-?`)xxQu0 zQ3}YXZ@>R#>jI$B#d(PpXy6|-Bw#`lP6$B99uP(-;e-@IXvi4}%wWe8RfM6(4M-rd z!3IVcF#-fKz)-~ko)Gdv2sO;$feAG*AYzGk$)EuNJhXVo0x+78!UqpXahDkt2rz&o pkDlxhLINL55rF{(5YPjYOvcd00}&j+29{v{afcgWmRU$306RZd8q5Fy literal 0 HcmV?d00001 diff --git a/source/web/images/filetypes32/pptx.gif b/source/web/images/filetypes32/pptx.gif new file mode 100644 index 0000000000000000000000000000000000000000..37cbd8b8b8acce0bff492090514d48387ece94af GIT binary patch literal 1006 zcmVRY!@}X=;rQ_HzP-IfYU^rKEg(eB0L7@9^;H>gwp|>7JgQ z+S=M|Yi!uq*tWK{+}78|!@}O)-m|l_@bU8M>+9v>;nLI7S65f_@$uc$)6vPv<=)-D zy1Kx?z|hdpP*6~;tgPmeT{n5zB@Z{sq(9n~Tlk@ZR=;`VB>FD+K_PM#a(8a{h&(WZt zpX1}>x3aO+$;kTS;MdO1!?(8a@bK-(#qja*sxc(&JS6}B|NsC0A^8LW004ggEC2ui z03ZM$000O7fPaF6goTEOh=d3k5g8dJj**TU84#8?Kw@Bt2nRApNJ2tIJv~G~R5v$1 zdl*s>Y!+ibhzA)*M{c1-q^GGqtWX#-Ck_q@hdw7oLP(%OrKUhXs(X7z7!WZIFeryF zVm(Df*^CPURtHvPV%AVb85Z3zw1iU=H$Olm5E=_sA_Q>2!oa`*60I=Id4S?U0Rx2^ za8Pw4o4<4(BywQT&Kia^FdPDaNa#a~lQ&w)U=!io6@mse zQN(0mBc;chQ`A^pi%{hOP5@~L5irp+!5j)%x_GGrCjfy7E(k!dw&#GF0szt;7=)lg z)frp=m?T-Eq=^$Ac=h0O*IN973>RzyLn5W6PdRd$ynkEnM^I!@IZd-@tqG5%ht@jvc%G zDCe!*5A){Eoipb>9D$r1Igs~}9(}s^?Y*TBKOjK|_Te0%-x z_=i^r5@bI3^}k7%o^U15fdhX!pa&p(3yO!u88}23go5~eC!lyE&=6sSy9MW=hkR6# z#fCW4X5xvkao|D)HLRc^4IsoQBM2ANXyXNBkl{icL-g1qAyHs4LIo|T(8huN$!A_m zc00H>KnMaPLWmU;#9%`J6d$Ahm?l=zySd)-hsxJOa@Q}n2AKez>pGf@x_vA cvI!;vR90Za3KZ07r=34s@rE3077_>mJI&8Bng9R* literal 0 HcmV?d00001 diff --git a/source/web/images/filetypes64/docx.png b/source/web/images/filetypes64/docx.png new file mode 100644 index 0000000000000000000000000000000000000000..c4816069bc6044bae0652efd58df371ccdd49719 GIT binary patch literal 6969 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 pmxT#~cjEZ=ue09*aEFio4FFm}ZvWx