欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

檢測項定位系統(tǒng)的制作方法

文檔序號:6564409閱讀:240來源:國知局
專利名稱:檢測項定位系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算才幾領(lǐng)域,尤其涉及一種才企測項定位系統(tǒng)。
背景技術(shù)
隨著產(chǎn)品的日益全球化,很多軟件都需要應(yīng)用到全球各個角 落,因此軟件的本地化就顯得越來越重要了。軟件的本地化是指軟 件的人才幾界面、提示信息等方面可以適應(yīng)不同國家的需要,即軟件 可以提供多種語言版本。
軟件的本地化有很多種方法,下面介紹兩種常用的軟件本地化 的方法。
第 一種方法是為不同語言的軟件版本提供不同的源代碼或者 配置文件。采用這種方法,如果需要提供一種新的語言版本或者需 要修改部分提示信息,就必須修改源代碼或者配置文件,然后重新 編譯軟件。這種方法比較容易引入新的故障,并且很難實現(xiàn)為客戶 定制界面的功能。但是采用這種方法,由于在這種方法中提示信息 或者界面中的標簽都是固定寫死的,所以響應(yīng)速度比較快。
第二種方法是只提供一份源代碼,然后通過配置文件配置軟件 的語言環(huán)境,通過資源文件定義提示信息或者界面中各個標簽需要 的資源字符串。當界面或者提示信息需要一個字符串,系統(tǒng)提供一 個方法,可以才艮據(jù)傳入的資源字符串,然后讀取配置文件中配置的
語言環(huán)境,返回對應(yīng)于此語言環(huán)境的相應(yīng)字符串。這種方法的優(yōu)點 在于當需要提供一種新的語言版本或者需要修改部分提示信息時, 只需要^務(wù)改資源文件,不需要重新編譯軟件,因此引入4晉誤的機會 比較少,并且比較容易為客戶實現(xiàn)界面定制功能。同時,由于在這 種方法中提示信息或者界面中的標簽都是從配置文件中動態(tài)讀取 的,所以響應(yīng)速度比較十曼。
由于軟件的本地化主要集中在界面,而界面對于響應(yīng)速度的要 求不是很高,所以一般采用第二種方法的軟件比較多。采用第二種 方法,軟件的靈活性和擴展性都比較好。
目前國內(nèi)的軟件本地化一般需要同時支持中英文版本。多數(shù)是 先開發(fā)出中文版本,然后以中文版本為基礎(chǔ)開發(fā)英文版本。這種本地化軟件一般容易出現(xiàn)以下問題
1、 英文版本源代碼中直接使用中文字符串。
2、 英文版本的幫助文件中包含中文字符或者中文標點符號。
3、 英文版本的數(shù)據(jù)庫腳本文件中包含中文字符或者中文標點 符號。
4、 英文版本的資源文件中包含中文字符或者中文標點符號。
故障,而這些常見故障通過常身見手段,例如用戶界面黑盒測試或者 走查代碼白盒測試的方式來排查都需要花費大量的人力和時間,并 且很難完全發(fā)現(xiàn)所有故障。這樣就提出了一種需求,如果能夠有一 種方法可以快速定位本地化軟件的常見故障,那樣就能夠大大縮短 本地化軟件開發(fā)的時間,從而降低軟件開發(fā)成本。

發(fā)明內(nèi)容
針對以上一個或多個問題,本發(fā)明才是供了 一種檢測項定位系 統(tǒng),可以快速定位本地化軟件開發(fā)過程中的常見故障,可以將本地 化軟件中的常見故障輸出到檢查結(jié)果文件中供開發(fā)人員分析、修改 故障。因此可以大大縮短本地化軟件開發(fā)的時間,從而降低軟件開 發(fā)成本。
本發(fā)明的檢測項定位系統(tǒng)包括定制模塊,用于為每種不同的 文件定義至少 一個檢測過濾模塊和檢測項定位模塊;至少 一個檢測 過濾才莫塊,以管道方式進行連接,用于分別對輸入代碼進行檢測并 將符合過濾條件的檢測項從代碼中過濾,將過濾后的代碼輸入到檢 測項定位模塊;以及檢測項定位模塊,用于對需要檢測的檢測項進 4亍檢測和定位,并生成檢測結(jié)果輸出文件,檢測結(jié)果輸出文件包括 不符合所有過濾條件的代碼的位置和代碼內(nèi)容。
定制模塊配置以下至少一種信息4企測過濾才莫塊和4企測項定位 才莫塊檢查的文件類型和不同文件類型對應(yīng)的一個或多個檢查項。定 制模塊通過新增類對任何文件類型進行配置。檢測項定位系統(tǒng)用于 定位代碼中的中文字符和/或中文標點符號。至少一個檢測過濾模塊 的檢測項為以下至少 一種注釋符之間的多行內(nèi)容和注釋符后面的 單行內(nèi)容。檢測項定位模塊的檢測項為中文字符和/或中文標點符 號。
本發(fā)明可以配置以下至少 一種信息檢測過濾才莫塊和4企測項定 位模塊檢查的文件類型和不同文件類型對應(yīng)的一個或多個檢查項。
本發(fā)明通過新增類對任何文件類型進行配置。
檢測項定位方法用于定位代碼中的中文字符和/或中文標點符
號。至少一個檢測過濾4莫塊的檢測項為以下至少一種注釋符之間 的多行內(nèi)容和注釋符后面的單行內(nèi)容。檢測項定位模塊的檢測項為 中文字符和/或中文標點符號。
本發(fā)明通過配置文件定制某種文件類型的檢測類,在4企測類可 以定制多個檢測模塊來檢查對應(yīng)文件類型中常見的本地化故障。本 發(fā)明適合于各種需要進行本地化處理的軟件開發(fā)項目。
附困說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申 請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并 不構(gòu)成對本發(fā)明的不當限定。在附圖中


圖1是才艮據(jù)本發(fā)明的檢測項定位系統(tǒng)的框圖2是^4t本發(fā)明的檢測項定位方法的流程圖3是才艮據(jù)本發(fā)明的實施例的啟動時解析配置文件的流程圖4是根據(jù)本發(fā)明的實施例的判斷是否包含/* */的流程圖5是4艮據(jù)本發(fā)明的實施例的判斷在代碼最前面是否為//的流 程圖6是4艮據(jù)本發(fā)明的實施例的判斷在代碼后面是否有〃的流程 圖;以及
圖7是根據(jù)本發(fā)明的實施例的解析檢查結(jié)果輸出對象,輸出檢 查結(jié)果文件的流程圖。
體實施方式
下面參考附圖,詳細說明本發(fā)明的具體實施方式
。
圖1是根據(jù)本發(fā)明的檢測項定位系統(tǒng)的框圖。如圖l所示,本
發(fā)明的檢測項定位系統(tǒng)包括定制模塊102,用于為不同種類的文 件定義至少 一個檢測過濾模塊和檢測項定位模塊;至少 一個檢測過 濾模塊104,以管道方式進行連接,用于分別對輸入代碼進行才全測 并將符合過濾條件的代碼過濾掉,并生成^^測結(jié)果輸出文件,該檢 測結(jié)果輸出文件中包括不符合所有過濾條件的代碼的位置和代碼 內(nèi)容以供開發(fā)人員修改本地化故障;以及檢測項定位模塊106,用 于對需要檢測的檢測項進行檢測和定位,并生成檢測結(jié)果輸出文 件,檢測結(jié)果輸出文件包括不符合所有過濾條件的代碼的位置和代 碼內(nèi)容。
定制才莫塊可以配置以下至少 一種信息檢測過濾4莫塊和檢測項 定位模塊檢查的文件類型和不同文件類型對應(yīng)的一個或多個檢查 項。定制才莫塊可以通過新增類對任何文件類型進4于配置。至少一個 檢測過濾模塊的檢測項為以下至少 一種注釋符之間的多行內(nèi)容和 注釋符后面的單行內(nèi)容。檢測項定位模塊的檢測項為中文字符和/ 或中文標點符號。
檢測項定位系統(tǒng)用于定位代碼中的中文字符和/或中文標點符號。
圖2是根據(jù)本發(fā)明的檢測項定位方法的流程圖。如圖2所示, 本發(fā)明的檢測項定位方法包括以下步驟步驟S202,為不同類型的 文件定義至少一個檢測過濾模塊和檢測項定位模塊;步驟S204,至 少一個檢測過濾模塊順序?qū)斎氪a進行檢測并將符合過濾條件 的代碼過濾,將過濾后的代碼輸入到檢測項定位模塊;以及步驟
S206,檢測項定位纟莫塊對需要檢測的^r測項進^f于^r測和定位,并生 成檢測結(jié)果輸出文件,所述檢測結(jié)果輸出文件包括不符合所有過濾 條件的代碼的位置和代碼內(nèi)容以供開發(fā)人員修改本地化故障。
本發(fā)明可以配置以下至少 一種信息#:測過濾才莫塊和檢測項定 位才莫塊檢查的文件類型和不同文件類型對應(yīng)的一個或多個檢查項。
本發(fā)明通過新增類對任何文件類型進行配置。
檢測項定位系統(tǒng)用于定位代碼中的中文字符和/或中文標點符 號。至少一個檢測過濾才莫塊的檢測項為以下至少一種注釋符之間 的多行內(nèi)容和注釋符后面的單行內(nèi)容。檢測項定位模塊的檢測項為 中文字符和/或中文標點符號。
根據(jù)本發(fā)明的一個實施例,本發(fā)明提供了 一種快速定位軟件本 地化中常見故障的方法。通過配置文件定制某種文件類型的檢測 類,在檢測類可以定制多個檢測才莫塊來檢查對應(yīng)文件類型中常見的 本地化故障。
本發(fā)明可以對指定目錄下的源代碼、文本文件、HTML、 XML 等類型的文件進行中文符號或者中文字符串的檢查,對不同類型文 4牛的判斷方法可以通過不同的檢測類來實i見,所以可以4艮容易地擴 展支持新增加的文件類型,檢查結(jié)果按照一定的格式輸出到結(jié)杲文 件,從而方便用戶的查看和糾錯。
首先分析上文提到的常見故障,這些常見故障在本地化軟件中 的很多種文件類型中都普遍存在。而不同的文件類型存在不同的注 釋標志,由于注釋行中的中文字符或者中文標點符號不算是故障,
對于本地化文件中的常見故障,定義了多個才莫塊來檢測,這些 模塊順序執(zhí)行。某個檢測模塊通過就說明這個字符串是合法的。就 不用流入下一個檢測模塊了 。
常見的檢測才莫塊有以下三類
1、 檢測注釋多行模塊。處于注釋符間的多行內(nèi)容都可以通過 檢測。
2、 檢測注釋單行模塊。處于注釋符后面的單行內(nèi)容可以通過 檢測。
3、 檢測中文字符或者中文標點符號模塊,如果檢測字符串中 沒有中文字符或者中文標點符號可以通過檢測。
不同類型的文件可以不同的檢測才莫塊,可以通過配置文件來為 不同的文件類型配置需要的檢測才莫塊,每種文件類型可以多個檢測 模塊,如果某種文件類型需要使用以上三種常見的檢測模塊之外的 檢測功能,可以通過實現(xiàn)接口的方式來創(chuàng)建一個新的檢測模塊。
下面介紹本發(fā)明的具體步驟,本發(fā)明提供了可靈活配置并且可 高度擴展的方案,包括以下步驟
(a) 定義一個檢測4莫塊的沖妄口 , 4妄口中包4舌兩個方法。 一個 方法用于初始化,另外一個方法用于對輸入的字符串進行檢測。所 有的檢測模塊都需要實現(xiàn)這個接口 。
(b) 定義配置文件,配置文件中為某種文件類型定義檢測類, 這些類都需要實現(xiàn)步驟(a)中的接口。還需要為不同的文件類型 定義不同的檢查項。不同的文件類型可以共用某個檢測類,最后配 指文件中還定義輸出檢測結(jié)果文件的格式和名稱。
(C)程序啟動時,將配置文件的內(nèi)容全部加載到內(nèi)存空間中,然后為不同文件類型的檢測類構(gòu)造一個實例,然后調(diào)用實例的初始化方法,在初始化方法中,根據(jù)配置文件中的檢測模塊配置信息來設(shè)置檢測模塊開關(guān)項。如圖3所示,啟動時解析配置文件的流程包括啟動自動檢測軟件(S302 );解析配置文件,將所有的配置信息加載到內(nèi)存中(S304);彈出界面供用戶輸入需要檢測的目錄以 及文件類型(S306)。
(d) 彈出界面供用戶選擇需要檢查的目錄。
(e) 對用戶選中的目錄,通過遞歸方式逐個實現(xiàn)對每一個符合檢查范圍的文件的檢查任務(wù)。
(f)才艮據(jù)文件類型從內(nèi)存中查找相應(yīng)的文件檢測類對象實例逐行對文件的內(nèi)容進行檢測。
(g)由于對某種類型文件可能配置有多種檢查項,多種檢查項之間采用管道方式來順序檢查,每項檢查項任務(wù)輸出符合要求的代碼內(nèi)容和代碼行號,同時該輸出項作為輸入項流入下一個檢查 項。
(h) —般來說檢測中文字符或者中文標點符號模塊都是最后一項檢測內(nèi)容,當其他的檢查項都檢查完后,對于最后一個檢查項流出的符合規(guī)范的代碼逐行檢查是否包括中文字符串,如果包含就 4巴此行內(nèi)容和行號記錄下來,最后流出一個包含所有不符合本地化 軟件規(guī)范的代碼內(nèi)容和代碼行號。
(i)對于上面流出的內(nèi)容,逐個解析后最后輸出一個檢查結(jié)果文件。輸出文件中針對每個文件都列出不符合的內(nèi)容,包括錯誤行號和錯誤內(nèi)容。
配置文件格式考慮到配置文件的擴展性,配置文件采用xml 文件格式。下面簡單介紹配置文件的各個配置項。
FILETYPE:文件類型
SUFFIX:文件后綴名
CLASSNAME:實玉見該中文件類型的類名。 CHECKMODULE:需要進行檢測的模塊 OUTPUTFILE:輸出文件名
下面以WCDMA網(wǎng)管系統(tǒng)為例,詳細介紹本發(fā)明的實施方法。
WCDMA網(wǎng)管系統(tǒng)采用java語言作為編程語言,本地化主要涉 及到幫助文件html;配置文件xml;數(shù)據(jù)庫腳本文件sql;以及源代 碼文件java。
下面重點介紹如何實現(xiàn)java文件的各個檢查項的功能。其他文 件類型的檢測方法也都類似,但是注釋符等略有不同,只要稍微做 一些調(diào)整就可以實現(xiàn)對其他文件類型的檢測了 。
本地化軟件中最常見的故障就是英文版本中的源代碼中直接 使用中文字符或者中文標點符號,這會造成在英文操作系統(tǒng)或者其 它語言搮作系統(tǒng)中顯示為亂碼的故障。
本方法的實現(xiàn)原理就是發(fā)現(xiàn)源代碼中的中文字符或者中文標 點符號,4旦是需要注意對于java源代碼中注釋部分中的中文字符或 者中文標點符號不屬于檢查范圍。
Java源代碼中的注釋行有以下幾種形式。
1、 /*和*/之間的內(nèi)容;
2、 行起始字符為//的內(nèi)容;
3、 行結(jié)尾字符為//的內(nèi)容;
針對這三種注釋形式,需要做不同的處理,這屬于三個處理模塊。
1、 對于/*類型注釋,首先表示此行為/*行,然后查詢此行是否有*/,如果有,將此行為/*行的標記清除掉。同時此行內(nèi)容為注釋行,如果此行中沒有V,則檢查下一行,直到檢查到有*/的行,處于/*和*/之間的內(nèi)容全部屬于注釋行。如圖4所示,示出了判斷是否包含/**/的流程圖。解析流入的Vector對象,循環(huán)獲取所有的元素,得到所有的/*和*/字符(S402);循環(huán)獲取所有的文件內(nèi)容,處于/*和*/之間的內(nèi)容屬于注釋,不輸出到檢查結(jié)果Vector對象中(S404); /*和*/需要成對出現(xiàn),如果/*后面接著/*,則將后面的/* 丟掉,直到找到下一個*/為止算是一對/*和*/ (S406);對于不屬于 注釋的代碼內(nèi)容和代碼行全部輸出到Vector對象中,作為下一個才全查項的流入對象(S408)。
2、 針對在行開始處為//注釋,此行為注釋行。圖5是根據(jù)本發(fā)明的實施例的判斷在代碼最前面是否為〃的流程圖。如圖5所示,包括以下步驟解析流入的Vector對象,循環(huán)獲取所有的元素,如果該行代碼除去空格后最前面包含//,則此行屬于注釋,不輸出到?jīng)_全查結(jié)果Vector對象中(S502);對于不屬于注釋的4、碼內(nèi)容和代碼4亍全部輸出到Vector對象中,作為下一個4全查項的流入對象(S504 )。
3、針對在行結(jié)束處后面跟著∥,此行不算注釋行過濾。但是需 要將∥后面的內(nèi)容過濾掉,這一行代碼還屬于檢查范圍。圖6是根 據(jù)本發(fā)明的實施例的判斷在代碼后面是否有〃的流程圖。如圖6所 示,包括以下步驟解析流入的Vector對象,循環(huán)獲取所有的元素, 如果該行代碼后面包含//,則此行包含注釋信息(S602);對于包含 注釋信息的代碼行,取出在最前面的∥之前的內(nèi)容作為沒有注釋信 息的代碼內(nèi)容,并和代碼行一起輸出到Vector對象中(S604);對 于不屬于注釋的代碼內(nèi)容和代碼行全部輸出到Vector對象中,作為 下一個檢查項的流入對象(S606)。
對于前面兩項檢測中為注釋行的內(nèi)容就不需要才全測其中是否 包含中文字符或者中文標點符號。但是對于最后一種情況,需要對 過濾掉∥后面的內(nèi)容進行檢測。
對于不屬于注釋行的內(nèi)容,需要檢測其中是否包括中文字符或 者中文標點符號,如果包含說明該行內(nèi)容^r測不通過。
將所有不符合的內(nèi)容和行號輸出到Vector對象中,對象中的每 個元素包含錯誤內(nèi)容和錯誤行號信息。圖7是根據(jù)本發(fā)明的實施例 的解析檢查結(jié)果輸出對象,輸出檢查結(jié)果文件的流程圖。如圖7所 示,包4舌以下步驟解4斤通過所有檢查項之后流出的Vector對象 (S702);循環(huán)逐行讀取通過所有檢查項的代碼,判斷是否包含中 文字符串,如果包含,則將此行的行號和內(nèi)容記錄下來。所有不合 法的代碼內(nèi)容和代碼行號都被記錄到一個Vector對象中(S704); 將上面Vector對象中的錯誤行號和錯誤內(nèi)容全部輸出到檢查結(jié)果文 件中(S706)。
最后對上面得到的Vector對象逐個元素進4亍解析,將解析后的 內(nèi)容輸出到檢查結(jié)果文件中供開發(fā)人員分析、定位故障。
對于其他類型文4牛的處理也可以參照這個方法。
本發(fā)明的實施例通過以下過程實現(xiàn)了故障的定位
(a) 配置文件的格式,其中,可以定義4企查哪些文件類型, 可以為不同文件類型定義不同的檢查項。通過配置文件,實現(xiàn)高度 的靈活性和可擴展性,可以通過新增類來實現(xiàn)對任何文件類型的才企 查。可以通過定義實現(xiàn)接口或者繼承類來實現(xiàn)某種新增文件類型的 檢查功能。
(b) 對于同一種文件類型的多種檢查項,采用管道的方式, 每一項檢查都屏蔽掉不符合本檢查項的內(nèi)容,然后將符合的內(nèi)容和 4亍號保存到一個Vector對象中,作為下一個沖企查項的輸入。
(c) 對一個文件的全部檢查項都檢查完畢后,解析最后得到 的所有符合檢查范圍的內(nèi)容,從中發(fā)現(xiàn)包括中文字符串的行號,然 后將行號和內(nèi)容都記錄到一個Vector對象中。并將所有文件的檢查 結(jié)果都輸出到一個文件中,包括文件名、錯誤內(nèi)容和錯誤行號。
本發(fā)明可以快速定位本地化軟件中的常見故障。實現(xiàn)這種方法 的軟件可以將本地化軟件中的常見故障輸出到檢查結(jié)果文件中供 開發(fā)人員分析、修改故障。因此可以大大縮短本地化軟件開發(fā)的時 間,從而降j氐軟件開發(fā)成本。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā) 明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。 凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進 等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種檢測項定位系統(tǒng),其特征在于,所述系統(tǒng)包括定制模塊,用于為每種不同的文件定義至少一個檢測過濾模塊和檢測項定位模塊;所述至少一個檢測過濾模塊,以管道方式進行連接,用于分別對輸入代碼進行檢測并將符合過濾條件的檢測項從所述代碼中過濾,將過濾后的代碼輸入到所述檢測項定位模塊;以及所述檢測項定位模塊,用于對需要檢測的檢測項進行檢測和定位,并生成檢測結(jié)果輸出文件,所述檢測結(jié)果輸出文件包括不符合所有過濾條件的代碼的位置和代碼內(nèi)容。
2. 根據(jù)權(quán)利要求1所述的檢測項定位系統(tǒng),其特征在于,所述定 制才莫塊配置以下至少一種信息所述檢測過濾才莫塊和所述^r測 項定位才莫塊檢查的文件類型和所述不同文件類型對應(yīng)的一個 或多個檢查項。
3. 根據(jù)權(quán)利要求1所述的檢測項定位系統(tǒng),其特征在于,所述定 制^=莫塊通過新增類對任何文件類型進行配置。
4. 根據(jù)權(quán)利要求1至3中任一項所述的檢測項定位系統(tǒng),其特征 在于,所述檢測項定位系統(tǒng)用于定位所述代碼中的中文字符和 /或中文標點符號。
5. 根據(jù)權(quán)利要求4所述的檢測項定位系統(tǒng),其特征在于,所述至 少 一個檢測過濾模塊的檢測項為以下至少 一種注釋符之間的 多行內(nèi)容和注釋符后面的單行內(nèi)容。
6. 根據(jù)權(quán)利要求4所述的檢測項定位系統(tǒng),其特征在于,所述檢 測項定位模塊的檢測項為中文字符和/或中文標點符號。
全文摘要
本發(fā)明提供了一種檢測項定位系統(tǒng),該系統(tǒng)包括定制模塊,用于為每種不同的文件定義至少一個檢測過濾模塊和檢測項定位模塊;至少一個檢測過濾模塊,以管道方式進行連接,用于分別對輸入代碼進行檢測并將符合過濾條件的檢測項從代碼中過濾,將過濾后的代碼輸入到檢測項定位模塊;以及檢測項定位模塊,用于對需要檢測的檢測項進行檢測和定位,并生成檢測結(jié)果輸出文件,檢測結(jié)果輸出文件包括不符合所有過濾條件的代碼的位置和代碼內(nèi)容。本發(fā)明通過配置文件定制某種文件類型的檢測類,在檢測類可以定制多個檢測模塊來檢查對應(yīng)文件類型中常見的本地化故障。
文檔編號G06F11/36GK101201789SQ20061016815
公開日2008年6月18日 申請日期2006年12月15日 優(yōu)先權(quán)日2006年12月15日
發(fā)明者翁在新 申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
瑞昌市| 田东县| 凤城市| 板桥市| 长治县| 深泽县| 乳源| 北碚区| 拜泉县| 汶川县| 公主岭市| 二手房| 长子县| 天水市| 英超| 绥芬河市| 屯门区| 垫江县| 和硕县| 田东县| 屯门区| 柳林县| 莒南县| 章丘市| 阳新县| 沭阳县| 益阳市| 万安县| 明光市| 台安县| 永仁县| 宜良县| 林口县| 阜阳市| 永福县| 临潭县| 德兴市| 延津县| 武清区| 洱源县| 奉化市|