Commit 20cc7593d25e64cce4b18f8da1def9de15327bb9
1 parent
1595ef67
Exists in
master
and in
7 other branches
correção no código
Showing
2 changed files
with
170 additions
and
131 deletions
Show diff stats
aplicmap/.map
| 1 | 1 | MAP |
| 2 | - EXTENT -140 -60 140 60 | |
| 3 | - FONTSET "/var/www/i3geo/symbols/fontes.txt" | |
| 4 | - IMAGECOLOR 104 171 195 | |
| 5 | - IMAGETYPE "AGG_Q" | |
| 6 | - MAXSIZE 4096 | |
| 7 | - NAME "GERAL" | |
| 8 | - SHAPEPATH "/var/www/geodados" | |
| 9 | - SIZE 480 500 | |
| 2 | + EXTENT -76.512593 -36.948432 -29.585185 7.046013 | |
| 3 | + FONTSET "/media/edmar/dados/trabalho/www/i3geo/symbols/fontes.txt" | |
| 4 | + IMAGETYPE "png" | |
| 5 | + MAXSIZE 10000 | |
| 6 | + NAME "i3geoogc" | |
| 7 | + SHAPEPATH "/opt/www/html/geodados" | |
| 8 | + SIZE 450 450 | |
| 10 | 9 | STATUS ON |
| 11 | - SYMBOLSET "/var/www/i3geo/symbols/simbolosv7.sym" | |
| 12 | - UNITS DD | |
| 10 | + SYMBOLSET "/media/edmar/dados/trabalho/www/i3geo/symbols/simbolosv7.sym" | |
| 11 | + UNITS METERS | |
| 13 | 12 | |
| 14 | 13 | OUTPUTFORMAT |
| 15 | - NAME "AGG_Q" | |
| 14 | + NAME "png" | |
| 16 | 15 | MIMETYPE "image/png" |
| 17 | 16 | DRIVER "AGG/PNG" |
| 18 | 17 | EXTENSION "png" |
| 19 | - IMAGEMODE RGB | |
| 20 | - TRANSPARENT FALSE | |
| 18 | + IMAGEMODE RGBA | |
| 19 | + TRANSPARENT TRUE | |
| 21 | 20 | FORMATOPTION "QUANTIZE_FORCE=ON" |
| 22 | 21 | FORMATOPTION "QUANTIZE_DITHER=OFF" |
| 23 | 22 | FORMATOPTION "QUANTIZE_COLORS=256" |
| ... | ... | @@ -25,33 +24,36 @@ MAP |
| 25 | 24 | END # OUTPUTFORMAT |
| 26 | 25 | |
| 27 | 26 | OUTPUTFORMAT |
| 28 | - NAME "jpeg" | |
| 29 | - MIMETYPE "image/jpeg" | |
| 30 | - DRIVER "AGG/JPEG" | |
| 31 | - EXTENSION "jpg" | |
| 32 | - IMAGEMODE RGB | |
| 27 | + NAME "shape-zip" | |
| 28 | + DRIVER "OGR/ESRI Shapefile" | |
| 29 | + IMAGEMODE FEATURE | |
| 33 | 30 | TRANSPARENT FALSE |
| 34 | - FORMATOPTION "INTERLACE=OFF" | |
| 35 | 31 | END # OUTPUTFORMAT |
| 36 | 32 | |
| 37 | 33 | OUTPUTFORMAT |
| 38 | - NAME "png1" | |
| 39 | - MIMETYPE "image/png" | |
| 40 | - DRIVER "AGG/PNG" | |
| 41 | - EXTENSION "png" | |
| 42 | - IMAGEMODE RGB | |
| 34 | + NAME "csv" | |
| 35 | + DRIVER "OGR/CSV" | |
| 36 | + IMAGEMODE FEATURE | |
| 43 | 37 | TRANSPARENT FALSE |
| 44 | - FORMATOPTION "INTERLACE=OFF" | |
| 38 | + FORMATOPTION "LCO:GEOMETRY=AS_WKT" | |
| 39 | + FORMATOPTION "STORAGE=memory" | |
| 45 | 40 | END # OUTPUTFORMAT |
| 46 | 41 | |
| 47 | 42 | OUTPUTFORMAT |
| 48 | - NAME "png2" | |
| 49 | - MIMETYPE "image/png" | |
| 50 | - DRIVER "AGG/PNG" | |
| 51 | - EXTENSION "png" | |
| 52 | - IMAGEMODE RGBA | |
| 53 | - TRANSPARENT TRUE | |
| 54 | - FORMATOPTION "INTERLACE=OFF" | |
| 43 | + NAME "kml" | |
| 44 | + DRIVER "OGR/KML" | |
| 45 | + IMAGEMODE FEATURE | |
| 46 | + TRANSPARENT FALSE | |
| 47 | + FORMATOPTION "STORAGE=memory" | |
| 48 | + END # OUTPUTFORMAT | |
| 49 | + | |
| 50 | + OUTPUTFORMAT | |
| 51 | + NAME "geojson" | |
| 52 | + DRIVER "OGR/GEOJSON" | |
| 53 | + IMAGEMODE FEATURE | |
| 54 | + TRANSPARENT FALSE | |
| 55 | + FORMATOPTION "STORAGE=memory" | |
| 56 | + FORMATOPTION "FORM=SIMPLE" | |
| 55 | 57 | END # OUTPUTFORMAT |
| 56 | 58 | |
| 57 | 59 | PROJECTION |
| ... | ... | @@ -61,142 +63,173 @@ MAP |
| 61 | 63 | "no_defs" |
| 62 | 64 | END # PROJECTION |
| 63 | 65 | LEGEND |
| 64 | - KEYSIZE 12 10 | |
| 66 | + KEYSIZE 10 10 | |
| 65 | 67 | KEYSPACING 5 5 |
| 66 | 68 | LABEL |
| 67 | 69 | FONT "verdana" |
| 68 | - SIZE 7 | |
| 69 | - OFFSET 0 -2 | |
| 70 | + SIZE 10 | |
| 71 | + OFFSET 0 0 | |
| 72 | + PARTIALS FALSE | |
| 70 | 73 | SHADOWSIZE 1 1 |
| 71 | 74 | END # LABEL |
| 72 | - STATUS OFF | |
| 75 | + STATUS ON | |
| 73 | 76 | END # LEGEND |
| 74 | 77 | |
| 75 | 78 | QUERYMAP |
| 76 | - COLOR 0 255 255 | |
| 77 | - SIZE 480 500 | |
| 78 | - STATUS ON | |
| 79 | + SIZE -1 -1 | |
| 80 | + STATUS OFF | |
| 79 | 81 | STYLE HILITE |
| 80 | 82 | END # QUERYMAP |
| 81 | 83 | |
| 82 | - REFERENCE | |
| 83 | - COLOR -1 -1 -1 | |
| 84 | - EXTENT -75.5728 -37.4751 -30.525 7.57273 | |
| 85 | - IMAGE "/var/www/i3geo/imagens/referencia1.png" | |
| 86 | - OUTLINECOLOR -1 -1 -1 | |
| 87 | - SIZE 150 150 | |
| 88 | - STATUS OFF | |
| 89 | - MARKER "ref" | |
| 90 | - MARKERSIZE 8 | |
| 91 | - MAXBOXSIZE 145 | |
| 92 | - MINBOXSIZE 8 | |
| 93 | - END # REFERENCE | |
| 94 | - | |
| 95 | 84 | SCALEBAR |
| 96 | - BACKGROUNDCOLOR 200 200 200 | |
| 97 | - INTERVALS 5 | |
| 85 | + IMAGECOLOR 255 255 255 | |
| 86 | + INTERVALS 4 | |
| 98 | 87 | LABEL |
| 99 | - SIZE 5 | |
| 88 | + SIZE 10 | |
| 100 | 89 | OFFSET 0 0 |
| 101 | 90 | SHADOWSIZE 1 1 |
| 102 | 91 | END # LABEL |
| 103 | - POSITION LR | |
| 104 | - SIZE 200 2 | |
| 105 | - STATUS EMBED | |
| 106 | - TRANSPARENT FALSE | |
| 107 | - UNITS KILOMETERS | |
| 92 | + SIZE 200 3 | |
| 93 | + STATUS OFF | |
| 94 | + UNITS MILES | |
| 108 | 95 | END # SCALEBAR |
| 109 | 96 | |
| 110 | 97 | WEB |
| 111 | - IMAGEPATH "/tmp/ms_tmp/imgEMZNhLeATG/" | |
| 112 | - IMAGEURL "/ms_tmp/imgEMZNhLeATG/" | |
| 113 | - TEMPLATE "" | |
| 98 | + IMAGEPATH "/tmp/ms_tmp/" | |
| 99 | + IMAGEURL "/ms_tmp/" | |
| 100 | + METADATA | |
| 101 | + "wms_srs" "EPSG:4326" | |
| 102 | + "wms_attribution_logourl_width" "85" | |
| 103 | + "wms_onlineresource" "http://localhost:80/i3geo/ogc.php" | |
| 104 | + "ows_country" "Brasil" | |
| 105 | + "ows_context_fid" "i3geo" | |
| 106 | + "ows_keywordlist" "i3Geo" | |
| 107 | + "wms_getcapabilities_version" "1.1.1" | |
| 108 | + "ows_city" "Brasilia" | |
| 109 | + "ows_addresstype" "uri" | |
| 110 | + "ows_contactperson" "Web Master" | |
| 111 | + "ows_context_version" "1.1.1" | |
| 112 | + "wms_attribution_title" "i3Geo" | |
| 113 | + "ows_abstract" "Web services gerados da base de dados do i3Geo. Para chamar um tema especificamente, veja o sistema de ajuda, digitando no navegador web ogc.php?ajuda=, para uma lista compacta de todos os servicos, digite ogc.php?lista=temas" | |
| 114 | + "ows_contactposition" "Administrador do sitio web" | |
| 115 | + "ows_onlineresource" "http://localhost:80/i3geo/ogc.php" | |
| 116 | + "ows_enable_request" "*" | |
| 117 | + "ows_stateorprovince" "DF" | |
| 118 | + "wms_feature_info_mime_type" "application/json" | |
| 119 | + "wms_attribution_logourl_format" "image/png" | |
| 120 | + "ows_contactorganization" "Coordenacao Geral de TI" | |
| 121 | + "ows_sld_enabled" "true" | |
| 122 | + "ows_name" "i3geoogc" | |
| 123 | + "wms_attribution_onlineresource" "http://localhost:80/i3geo" | |
| 124 | + "wms_attribution_logourl_height" "56" | |
| 125 | + "ows_accessconstraints" "vedado o uso comercial" | |
| 126 | + "wfs_title" "i3Geo - i3geo" | |
| 127 | + "ows_fees" "none" | |
| 128 | + "ows_contactelectronicmailaddress" "" | |
| 129 | + "wms_attribution_logourl_href" "http://localhost:80/i3geo/imagens/i3geo.png" | |
| 130 | + "ows_namespace_uri" "http://www.omsug.ca/osgis2004" | |
| 131 | + "ows_getcontext_enabled" "1" | |
| 132 | + "ows_address" "http://www.mma.gov.br" | |
| 133 | + "wms_title" "i3Geo - i3geo" | |
| 134 | + "ows_postcode" "" | |
| 135 | + END # METADATA | |
| 136 | + TEMPLATE "none.htm" | |
| 114 | 137 | END # WEB |
| 115 | 138 | |
| 116 | 139 | LAYER |
| 117 | - DATA "/var/www/i3geo/aplicmap/dados/mundo" | |
| 118 | - GROUP "mundo" | |
| 140 | + CONNECTION "" | |
| 141 | + DATA "/var/www/i3geo/aplicmap/dados/biomas.shp" | |
| 142 | + GROUP "" | |
| 119 | 143 | METADATA |
| 120 | - "cache" "sim" | |
| 121 | - "TIP" "FIPS_CNTRY,GMI_CNTRY,CNTRY_NAME" | |
| 144 | + "METAESTAT_ID_MEDIDA_VARIAVEL" "" | |
| 145 | + "WFS_INCLUDE_ITEMS" "all" | |
| 146 | + "TIP" "CD_LEGENDA" | |
| 147 | + "CACHE" "sim" | |
| 122 | 148 | "CLASSE" "SIM" |
| 123 | - "ITENSDESC" "FIPS,GMI,Nome,Wikipedia" | |
| 124 | - "ITENSLINK" ",,,http://pt.wikipedia.org/wiki/[CNTRY_NAME]" | |
| 125 | - "TITULO" "Países do mundo" | |
| 126 | - "itembuscarapida" "LONG_NAME" | |
| 127 | - "ITENS" "FIPS_CNTRY,GMI_CNTRY,LONG_NAME,CNTRY_NAME" | |
| 128 | - "TEMA" "Países do mundo" | |
| 149 | + "permitekmz" "sim" | |
| 150 | + "ITENSDESC" "Bioma Teste de acentuação" | |
| 151 | + "WMS_INCLUDE_ITEMS" "all" | |
| 152 | + "ESCALA" "1000000" | |
| 153 | + "TILES" "SIM" | |
| 154 | + "METAESTAT_CODIGO_TIPO_REGIAO" "" | |
| 155 | + "wms_extent" "-76 -39 -29 9" | |
| 156 | + "extensao" "-76 -39 -29 9" | |
| 157 | + "permitedownload" "sim" | |
| 158 | + "ows_srs" "EPSG:4618 EPSG:4618 EPSG:4291 EPSG:4326 EPSG:22521 EPSG:22522 EPSG:22523 EPSG:22524 EPSG:22525 EPSG:29101 EPSG:29119 EPSG:29120 EPSG:29121 EPSG:29122 EPSG:29177 EPSG:29178 EPSG:29179 EPSG:29180 EPSG:29181 EPSG:29182 EPSG:29183 EPSG:29184 EPSG:29185" | |
| 159 | + "metaestat" "" | |
| 160 | + "download" "sim" | |
| 161 | + "ows_title" "_Biomas SHP (acentução)" | |
| 162 | + "itembuscarapida" "CD_LEGENDA" | |
| 163 | + "ITENS" "CD_LEGENDA" | |
| 164 | + "transitioneffect" "SIM" | |
| 165 | + "permiteogc" "sim" | |
| 166 | + "permitekml" "sim" | |
| 167 | + "TEMA" "_Biomas SHP (acentução)" | |
| 168 | + "gml_include_items" "all" | |
| 129 | 169 | END # METADATA |
| 130 | - NAME "mundo" | |
| 131 | - STATUS OFF | |
| 170 | + NAME "_lbiomashp" | |
| 171 | + PROCESSING "ITEMS=CD_LEGENDA" | |
| 172 | + PROCESSING "LABEL_NO_CLIP=True" | |
| 173 | + PROCESSING "POLYLINE_NO_CLIP=True" | |
| 174 | + STATUS DEFAULT | |
| 132 | 175 | TEMPLATE "none.htm" |
| 133 | 176 | TILEITEM "location" |
| 134 | 177 | TYPE POLYGON |
| 135 | 178 | UNITS METERS |
| 136 | 179 | CLASS |
| 137 | - NAME "" | |
| 180 | + NAME "CAATINGA" | |
| 181 | + EXPRESSION ('[CD_LEGENDA]'eq'CAATINGA') | |
| 138 | 182 | STYLE |
| 139 | - COLOR 230 230 230 | |
| 183 | + COLOR 4 180 226 | |
| 140 | 184 | OUTLINECOLOR 255 255 255 |
| 141 | 185 | END # STYLE |
| 186 | + TITLE "" | |
| 142 | 187 | END # CLASS |
| 143 | - END # LAYER | |
| 144 | - | |
| 145 | - LAYER | |
| 146 | - METADATA | |
| 147 | - "cache" "nao" | |
| 148 | - "ESCONDIDO" "SIM" | |
| 149 | - "TEMA" "NAO" | |
| 150 | - END # METADATA | |
| 151 | - NAME "copyright" | |
| 152 | - STATUS DEFAULT | |
| 153 | - TILEITEM "location" | |
| 154 | - TOLERANCE 0 | |
| 155 | - TRANSFORM FALSE | |
| 156 | - TYPE POINT | |
| 157 | - UNITS METERS | |
| 158 | 188 | CLASS |
| 159 | - LABEL | |
| 160 | - SIZE 5 | |
| 161 | - COLOR 50 50 50 | |
| 162 | - OFFSET 0 0 | |
| 163 | - POSITION CC | |
| 164 | - SHADOWSIZE 1 1 | |
| 165 | - END # LABEL | |
| 189 | + NAME "PAMPA area > 5" | |
| 190 | + EXPRESSION ('[CD_LEGENDA]'eq'PAMPA area > 5') | |
| 191 | + STYLE | |
| 192 | + COLOR 116 220 127 | |
| 193 | + OUTLINECOLOR 255 255 255 | |
| 194 | + END # STYLE | |
| 195 | + TITLE "" | |
| 166 | 196 | END # CLASS |
| 167 | - FEATURE | |
| 168 | - POINTS | |
| 169 | - 10 5 | |
| 170 | - END # POINTS | |
| 171 | - TEXT "- i3Geo" | |
| 172 | - END # FEATURE | |
| 173 | - END # LAYER | |
| 174 | - | |
| 175 | - LAYER | |
| 176 | - METADATA | |
| 177 | - "CLASSE" "NAO" | |
| 178 | - "TABELA" "nao" | |
| 179 | - "TEMA" "Rosa dos ventos" | |
| 180 | - "IDENTIFICA" "nao" | |
| 181 | - END # METADATA | |
| 182 | - NAME "rosadosventos" | |
| 183 | - STATUS OFF | |
| 184 | - TILEITEM "location" | |
| 185 | - TOLERANCE 0 | |
| 186 | - TRANSFORM LR | |
| 187 | - TYPE POINT | |
| 188 | - UNITS PIXELS | |
| 189 | 197 | CLASS |
| 198 | + NAME "CERRADO" | |
| 199 | + EXPRESSION ('[CD_LEGENDA]'eq'CERRADO') | |
| 190 | 200 | STYLE |
| 191 | - SIZE 90 | |
| 192 | - SYMBOL "rosa200" | |
| 201 | + COLOR 202 199 25 | |
| 202 | + OUTLINECOLOR 255 255 255 | |
| 203 | + END # STYLE | |
| 204 | + TITLE "" | |
| 205 | + END # CLASS | |
| 206 | + CLASS | |
| 207 | + NAME "PANTANAL" | |
| 208 | + EXPRESSION ('[CD_LEGENDA]'eq'PANTANAL') | |
| 209 | + STYLE | |
| 210 | + COLOR 68 130 30 | |
| 211 | + OUTLINECOLOR 255 255 255 | |
| 212 | + END # STYLE | |
| 213 | + TITLE "" | |
| 214 | + END # CLASS | |
| 215 | + CLASS | |
| 216 | + NAME "AMAZÔNIA" | |
| 217 | + EXPRESSION ('[CD_LEGENDA]'eq'AMAZÃNIA') | |
| 218 | + STYLE | |
| 219 | + COLOR 23 2 150 | |
| 220 | + OUTLINECOLOR 255 255 255 | |
| 221 | + END # STYLE | |
| 222 | + TITLE "" | |
| 223 | + END # CLASS | |
| 224 | + CLASS | |
| 225 | + NAME "MATA ATLÂNTICA" | |
| 226 | + EXPRESSION ('[CD_LEGENDA]'eq'MATA ATLÃNTICA') | |
| 227 | + STYLE | |
| 228 | + COLOR 187 96 164 | |
| 229 | + OUTLINECOLOR 255 255 255 | |
| 193 | 230 | END # STYLE |
| 231 | + TITLE "" | |
| 194 | 232 | END # CLASS |
| 195 | - FEATURE | |
| 196 | - POINTS | |
| 197 | - -70 -70 | |
| 198 | - END # POINTS | |
| 199 | - END # FEATURE | |
| 200 | 233 | END # LAYER |
| 201 | 234 | |
| 202 | 235 | END # MAP | ... | ... |
ogc.php
| ... | ... | @@ -104,7 +104,6 @@ if(isset($_GET["TileMatrix"])){ |
| 104 | 104 | } |
| 105 | 105 | $_GET = array_merge($_GET,$_POST); |
| 106 | 106 | |
| 107 | - | |
| 108 | 107 | if($_GET["id_medida_variavel"] != ""){ |
| 109 | 108 | $_GET["id_medida_variavel"] = filter_var ( $_GET["id_medida_variavel"], FILTER_SANITIZE_NUMBER_INT); |
| 110 | 109 | } |
| ... | ... | @@ -139,6 +138,7 @@ if(!isset($_GET["ows_geomtype"]) || $_GET["ows_geomtype"] == ""){ |
| 139 | 138 | else{ |
| 140 | 139 | $ows_geomtype = $_GET["ows_geomtype"]; |
| 141 | 140 | } |
| 141 | + | |
| 142 | 142 | // |
| 143 | 143 | //imprime na tela a ajuda |
| 144 | 144 | // |
| ... | ... | @@ -208,6 +208,7 @@ if(strpos(strtolower($OUTPUTFORMAT),"kmz") !== false){ |
| 208 | 208 | if(!empty($OUTPUTFORMAT)){ |
| 209 | 209 | carregaCacheArquivo(); |
| 210 | 210 | } |
| 211 | + | |
| 211 | 212 | // |
| 212 | 213 | //para o caso da requisicao kmz |
| 213 | 214 | //kmz nao funciona diretamente com mapserver |
| ... | ... | @@ -325,6 +326,7 @@ if(!isset($VERSION) || $VERSION == ""){ |
| 325 | 326 | // |
| 326 | 327 | //nome do mapfile que ficara em cache |
| 327 | 328 | // |
| 329 | + | |
| 328 | 330 | $agora = intval(time() / 1000); |
| 329 | 331 | //acrescenta ao nome a indicacao do tipo de TMS |
| 330 | 332 | if(isset($_GET["tms"])){ |
| ... | ... | @@ -357,6 +359,7 @@ $arrayget["TileCol"] = ""; |
| 357 | 359 | $arrayget["TileRow"] = ""; |
| 358 | 360 | |
| 359 | 361 | $nomeMapfileTmp = $dir_tmp."/ogc_".md5(implode("",$arrayget))."_".$agora.".map"; |
| 362 | + | |
| 360 | 363 | //essa variavel e usada para definir se a imagem final gerada devera ser cortada ou nao |
| 361 | 364 | $cortePixels = 0; |
| 362 | 365 | $ogcwsmap = $_GET["ogcwsmap"]; |
| ... | ... | @@ -419,6 +422,7 @@ else{ |
| 419 | 422 | $extensao = ".gvp"; |
| 420 | 423 | } |
| 421 | 424 | if($extensao == ".map"){ |
| 425 | + | |
| 422 | 426 | //cria o mapfile com base no sistema de metadados estatisticos |
| 423 | 427 | //verifica se o id_medida_variavel existe no mapfile e nao foi passado como um parametro |
| 424 | 428 | if(!isset($_GET["id_medida_variavel"]) && $temai3geo == true){ |
| ... | ... | @@ -429,7 +433,7 @@ else{ |
| 429 | 433 | $_GET["id_medida_variavel"] = $teste; |
| 430 | 434 | } |
| 431 | 435 | } |
| 432 | - if(isset($_GET["id_medida_variavel"])){ | |
| 436 | + if(isset($_GET["id_medida_variavel"])){ | |
| 433 | 437 | $temai3geo = false; |
| 434 | 438 | include("admin/php/classe_metaestat.php"); |
| 435 | 439 | $m = new Metaestat(); |
| ... | ... | @@ -526,6 +530,7 @@ else{ |
| 526 | 530 | $l->setprocessing("POLYLINE_NO_CLIP=True"); |
| 527 | 531 | } |
| 528 | 532 | } |
| 533 | + | |
| 529 | 534 | // |
| 530 | 535 | //verifica se existem parametros de substituicao passados via url |
| 531 | 536 | // |
| ... | ... | @@ -736,12 +741,13 @@ else{ |
| 736 | 741 | $oMap->setSymbolSet($locaplic."/symbols/".basename($oMap->symbolsetfilename)); |
| 737 | 742 | $oMap->setFontSet($locaplic."/symbols/".basename($oMap->fontsetfilename)); |
| 738 | 743 | //verifica se existem layers com plugin definido e processa conforme o tipo de plugin |
| 744 | + | |
| 739 | 745 | processaPluginI3geo(); |
| 740 | 746 | // |
| 741 | 747 | //caso seja download ou json ou csv |
| 742 | 748 | // |
| 743 | 749 | processaOutputformatMapfile(); |
| 744 | - $nomeMapfileTmp = str_replace(".map","").".map"; | |
| 750 | + $nomeMapfileTmp = str_replace(".map","",$nomeMapfileTmp).".map"; | |
| 745 | 751 | $oMap->save($nomeMapfileTmp); |
| 746 | 752 | |
| 747 | 753 | validaAcessoTemas($nomeMapfileTmp,true); | ... | ... |