Commit 628e553d87c08a98d666f3a00bdf82fa74dbcc91
1 parent
161cda39
Exists in
master
and in
7 other branches
--no commit message
Showing
13 changed files
with
107 additions
and
32 deletions
Show diff stats
classesphp/classe_analise.php
... | ... | @@ -668,7 +668,11 @@ $locaplic - diretório da aplicação i3geo |
668 | 668 | $def[] = array("y2","N","12","5"); |
669 | 669 | $def[] = array("ind1","N","5","0"); |
670 | 670 | $def[] = array("ind2","N","5","0"); |
671 | - $db = xbase_create($nomeshp.".dbf", $def); | |
671 | + if(!function_exists(dbase_create)) | |
672 | + {xbase_create($nomeshp.".dbf", $def);} | |
673 | + else | |
674 | + {dbase_create($nomeshp.".dbf", $def);} | |
675 | + | |
672 | 676 | $dbname = $nomeshp.".dbf"; |
673 | 677 | //le o arquivo linha a linha, pulando a primeira |
674 | 678 | //acrescenta os pontos no shape file formando as linhas |
... | ... | @@ -764,13 +768,20 @@ $locaplic - diretório da aplicação i3geo |
764 | 768 | $def[] = array("b1","C","6"); |
765 | 769 | $def[] = array("b2","C","6"); |
766 | 770 | $dbLinhas = xbase_create($nomeshpLinhas.".dbf", $def); |
771 | + if(!function_exists(dbase_create)) | |
772 | + {$dbLinhas = xbase_create($nomeshpLinhas.".dbf", $def);} | |
773 | + else | |
774 | + {$dbLinhas = dbase_create($nomeshpLinhas.".dbf", $def);} | |
767 | 775 | $dbnameLinhas = $nomeshpLinhas.".dbf"; |
768 | 776 | // |
769 | 777 | // cria o dbf para o shapefile poligonal |
770 | 778 | // |
771 | 779 | $def = array(); |
772 | 780 | $def[] = array("area","N","12","5"); |
773 | - $dbPoligonos = xbase_create($nomeshpPoligonos.".dbf", $def); | |
781 | + if(!function_exists(dbase_create)) | |
782 | + {$dbPoligonos = xbase_create($nomeshpPoligonos.".dbf", $def);} | |
783 | + else | |
784 | + {$dbPoligonos = dbase_create($nomeshpPoligonos.".dbf", $def);} | |
774 | 785 | $dbnamePoligonos = $nomeshpPoligonos.".dbf"; |
775 | 786 | // |
776 | 787 | //constrói as linhas do diagrama |
... | ... | @@ -966,7 +977,10 @@ $locaplic - Localização do I3geo. |
966 | 977 | $conta = $conta + 1; |
967 | 978 | } |
968 | 979 | } |
969 | - $db = xbase_create($nomeshp.".dbf", $def); | |
980 | + if(!function_exists(dbase_create)) | |
981 | + {xbase_create($nomeshp.".dbf", $def);} | |
982 | + else | |
983 | + {dbase_create($nomeshp.".dbf", $def);} | |
970 | 984 | //acrescenta os pontos no novo shapefile |
971 | 985 | $dbname = $nomeshp.".dbf"; |
972 | 986 | foreach($pontos as $ponto) |
... | ... | @@ -1100,7 +1114,10 @@ function distanciaptpt($temaorigem,$temadestino,$temaoverlay,$locaplic,$itemorig |
1100 | 1114 | $def[] = array("dist_m","N","10","2"); |
1101 | 1115 | $def[] = array("origem","C","255"); |
1102 | 1116 | $def[] = array("destino","C","255"); |
1103 | - $db = xbase_create($nomeshp.".dbf", $def); | |
1117 | + if(!function_exists(dbase_create)) | |
1118 | + {xbase_create($nomeshp.".dbf", $def);} | |
1119 | + else | |
1120 | + {dbase_create($nomeshp.".dbf", $def);} | |
1104 | 1121 | //acrescenta os pontos no novo shapefile |
1105 | 1122 | $dbname = $nomeshp.".dbf"; |
1106 | 1123 | foreach ($shapesorigem as $sorigem) |
... | ... | @@ -1228,7 +1245,10 @@ nome do layer criado com o buffer. |
1228 | 1245 | $def[] = array("i3geo","C","254"); |
1229 | 1246 | foreach ($items as $ni) |
1230 | 1247 | {$def[] = array($ni,"C","254");} |
1231 | - $db = xbase_create($nomeshp.".dbf", $def); | |
1248 | + if(!function_exists(dbase_create)) | |
1249 | + {xbase_create($nomeshp.".dbf", $def);} | |
1250 | + else | |
1251 | + {dbase_create($nomeshp.".dbf", $def);} | |
1232 | 1252 | //acrescenta os pontos no novo shapefile |
1233 | 1253 | $dbname = $nomeshp.".dbf"; |
1234 | 1254 | for($i = 0;$i < count($buffers);++$i) |
... | ... | @@ -1315,7 +1335,10 @@ $locaplic - Localização do I3geo. |
1315 | 1335 | $def = array(); |
1316 | 1336 | foreach ($items as $ni) |
1317 | 1337 | {$def[] = array($ni,"C","254");} |
1318 | - $db = xbase_create($nomeshp.".dbf", $def); | |
1338 | + if(!function_exists(dbase_create)) | |
1339 | + {xbase_create($nomeshp.".dbf", $def);} | |
1340 | + else | |
1341 | + {dbase_create($nomeshp.".dbf", $def);} | |
1319 | 1342 | //acrescenta os pontos no novo shapefile |
1320 | 1343 | $dbname = $nomeshp.".dbf"; |
1321 | 1344 | for($i = 0;$i < count($centroides);++$i) |
... | ... | @@ -1392,7 +1415,10 @@ $npty - Número de pontos em Y (opcional) |
1392 | 1415 | $def = array(); |
1393 | 1416 | $def[] = array("x","C","20"); |
1394 | 1417 | $def[] = array("y","C","20"); |
1395 | - $db = xbase_create($nomeshp.".dbf", $def); | |
1418 | + if(!function_exists(dbase_create)) | |
1419 | + {xbase_create($nomeshp.".dbf", $def);} | |
1420 | + else | |
1421 | + {dbase_create($nomeshp.".dbf", $def);} | |
1396 | 1422 | //acrescenta os pontos no novo shapefile |
1397 | 1423 | $dbname = $nomeshp.".dbf"; |
1398 | 1424 | $reg = array(); |
... | ... | @@ -1504,7 +1530,10 @@ $npty - Número de pontos em Y (opcional) |
1504 | 1530 | $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POLYGON); |
1505 | 1531 | $def = array(); |
1506 | 1532 | $def[] = array("id","C","20"); |
1507 | - $db = xbase_create($nomeshp.".dbf", $def); | |
1533 | + if(!function_exists(dbase_create)) | |
1534 | + {xbase_create($nomeshp.".dbf", $def);} | |
1535 | + else | |
1536 | + {dbase_create($nomeshp.".dbf", $def);} | |
1508 | 1537 | //acrescenta os pontos no novo shapefile |
1509 | 1538 | $dbname = $nomeshp.".dbf"; |
1510 | 1539 | $reg = array(); |
... | ... | @@ -1642,7 +1671,10 @@ $npty - Número de pontos em Y (opcional) |
1642 | 1671 | $novoshpf = ms_newShapefileObj($nomeshp, MS_SHP_POLYGON); |
1643 | 1672 | $def = array(); |
1644 | 1673 | $def[] = array("id","C","20"); |
1645 | - $db = xbase_create($nomeshp.".dbf", $def); | |
1674 | + if(!function_exists(dbase_create)) | |
1675 | + {xbase_create($nomeshp.".dbf", $def);} | |
1676 | + else | |
1677 | + {dbase_create($nomeshp.".dbf", $def);} | |
1646 | 1678 | //acrescenta os pontos no novo shapefile |
1647 | 1679 | $dbname = $nomeshp.".dbf"; |
1648 | 1680 | $reg = array(); |
... | ... | @@ -1778,7 +1810,10 @@ $locaplic - Localização do I3geo |
1778 | 1810 | foreach ($itenspo as $ni) |
1779 | 1811 | {$def[] = array($ni,"C","254");} |
1780 | 1812 | $def[] = array("npontos","N","10","0"); |
1781 | - $db = xbase_create($nomeshp.".dbf", $def); | |
1813 | + if(!function_exists(dbase_create)) | |
1814 | + {xbase_create($nomeshp.".dbf", $def);} | |
1815 | + else | |
1816 | + {dbase_create($nomeshp.".dbf", $def);} | |
1782 | 1817 | $dbname = $nomeshp.".dbf"; |
1783 | 1818 | $sopen = $layerPo->open(); |
1784 | 1819 | if($sopen == MS_FAILURE){return "erro";} |
... | ... | @@ -1892,7 +1927,10 @@ Salva o mapa acrescentando um novo layer com o resultado. |
1892 | 1927 | $def = array(); |
1893 | 1928 | if($item==""){$item="nenhum";} |
1894 | 1929 | $def[] = array($item,"C","254"); |
1895 | - $db = xbase_create($nomeshp.".dbf", $def); | |
1930 | + if(!function_exists(dbase_create)) | |
1931 | + {xbase_create($nomeshp.".dbf", $def);} | |
1932 | + else | |
1933 | + {dbase_create($nomeshp.".dbf", $def);} | |
1896 | 1934 | $dbname = $nomeshp.".dbf"; |
1897 | 1935 | $classes = array_keys($dissolve); |
1898 | 1936 | foreach ($classes as $classe) |
... | ... | @@ -1996,7 +2034,10 @@ $locaplic - Localização do I3geo |
1996 | 2034 | $def = array(); |
1997 | 2035 | if($item==""){$item="nenhum";} |
1998 | 2036 | $def[] = array($item,"C","254"); |
1999 | - $db = xbase_create($nomeshp.".dbf", $def); | |
2037 | + if(!function_exists(dbase_create)) | |
2038 | + {xbase_create($nomeshp.".dbf", $def);} | |
2039 | + else | |
2040 | + {dbase_create($nomeshp.".dbf", $def);} | |
2000 | 2041 | $dbname = $nomeshp.".dbf"; |
2001 | 2042 | $classes = array_keys($dissolve); |
2002 | 2043 | foreach ($classes as $classe) |
... | ... | @@ -2261,7 +2302,10 @@ $operacao - Tipo de análise. |
2261 | 2302 | $l = criaLayer($this->mapa,$tiposhape,MS_DEFAULT,"Ins","SIM"); |
2262 | 2303 | $novoshpf = ms_newShapefileObj($nomeshp, $tiposhapefile); |
2263 | 2304 | $def[] = array("ID","C","250"); |
2264 | - $db = xbase_create($nomeshp.".dbf", $def); | |
2305 | + if(!function_exists(dbase_create)) | |
2306 | + {xbase_create($nomeshp.".dbf", $def);} | |
2307 | + else | |
2308 | + {dbase_create($nomeshp.".dbf", $def);} | |
2265 | 2309 | $conta = 0; |
2266 | 2310 | foreach ($shapes as $s) |
2267 | 2311 | { | ... | ... |
classesphp/classe_mapa.php
... | ... | @@ -1313,7 +1313,10 @@ $canal - Identificador do canal (ordem em que está no RSS) |
1313 | 1313 | $def[] = array("LINK","C","254"); |
1314 | 1314 | $def[] = array("DESC","C","254"); |
1315 | 1315 | $def[] = array("CATEGORIA","C","254"); |
1316 | - $db = xbase_create($nomeshp.".dbf", $def); | |
1316 | + if(!function_exists(dbase_create)) | |
1317 | + {xbase_create($nomeshp.".dbf", $def)} | |
1318 | + else | |
1319 | + {dbase_create($nomeshp.".dbf", $def)} | |
1317 | 1320 | $dbname = $nomeshp.".dbf"; |
1318 | 1321 | $reg = array(); |
1319 | 1322 | $novoshpf = ms_newShapefileObj($nomeshp.".shp", -2); | ... | ... |
css/geral.css
1 | +.paragrafo | |
2 | +{font-size:12px;line-height:15px;margin-bottom:9px;text-align:left;} | |
1 | 3 | .lista td |
2 | 4 | {border: 0px solid rgb(240,240,240);border-left: 0px;border-right:0px;border-top:0px;padding: 0px;color:#2F4632;margin:0px;text-align:left;font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif;} |
3 | 5 | .lista2 td | ... | ... |
css/i3geo.css
1 | +.paragrafo | |
2 | +{font-size:12px;line-height:15px;margin-bottom:9px;text-align:left;} | |
1 | 3 | .lista td |
2 | 4 | {border: 0px solid rgb(240,240,240);border-left: 0px;border-right:0px;border-top:0px;padding: 0px;color:#2F4632;margin:0px;text-align:left;font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif;} |
3 | 5 | .lista2 td | ... | ... |
css/i3geo.css.php
1 | -<?php if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/css"); ?>.lista td | |
1 | +<?php if(extension_loaded('zlib')){ob_start('ob_gzhandler');} header("Content-type: text/css"); ?>.paragrafo | |
2 | +{font-size:12px;line-height:15px;margin-bottom:9px;text-align:left;} | |
3 | +.lista td | |
2 | 4 | {border: 0px solid rgb(240,240,240);border-left: 0px;border-right:0px;border-top:0px;padding: 0px;color:#2F4632;margin:0px;text-align:left;font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif;} |
3 | 5 | .lista2 td |
4 | 6 | {border: 0px solid rgb(240,240,240);border-left: 0px;border-right:0px;border-top:0px;padding: 2px;color:#2F4632;margin:0px;text-align:left;font-size: 10px;font-family: Verdana, Arial, Helvetica, sans-serif;} | ... | ... |
ferramentas/graficotema/index.js.php
... | ... | @@ -87,11 +87,11 @@ i3GEOF.graficoTema = { |
87 | 87 | ins += ' <div class=guiaobj id="i3GEOgraficotemaguia1obj" style="left:1px;90%;display:none;">'; |
88 | 88 | ins += ' <div id=i3GEOgraficotemacombot style="display:none;position:relative;top:5px;left:0px;">'; |
89 | 89 | ins += ' </div>'; |
90 | - ins += ' <p>Escolha os itens to tipo numérico que comporão cada parte do gráfico<br><br>'; | |
90 | + ins += ' <p class="paragrafo" >Escolha os itens to tipo numérico que comporão cada parte do gráfico<br><br>'; | |
91 | 91 | ins += ' <div id=i3GEOgraficotemalistai class=digitar style="left:0px;top:0px;330px;height:80px;overflow:auto;display:block;">Escolha o tema para ver a lista de itens</div>'; |
92 | 92 | ins += ' <br><br>'; |
93 | 93 | ins += ' <input id=i3GEOgraficotemabotao1 size=35 type=button value="Criar gráficos" />'; |
94 | - ins += ' <div id=i3GEOgraficotemamen1 style=top:10px;left:1px >Marque os itens para compor as partes do gráfico: Edite os valores de cor (R,G,B) conforme o desejado. Após escolher os itens, clique em criar gráficos para inserir um novo tema com os gráficos.</div>'; | |
94 | + ins += ' <div id=i3GEOgraficotemamen1 style=top:10px;left:1px ><p class="paragrafo">Marque os itens para compor as partes do gráfico: Edite os valores de cor (R,G,B) conforme o desejado. Após escolher os itens, clique em criar gráficos para inserir um novo tema com os gráficos.</div>'; | |
95 | 95 | ins += ' </div>'; |
96 | 96 | ins += ' <div class=guiaobj id="i3GEOgraficotemaguia2obj" style="left:1px;display:none;">'; |
97 | 97 | ins += ' <table summary="" class=lista width="90%">'; |
... | ... | @@ -136,7 +136,7 @@ i3GEOF.graficoTema = { |
136 | 136 | titulo = "Graficos <a class=ajuda_usuario target=_blank href='" + i3GEO.configura.locaplic + "/ajuda_usuario.php?idcategoria=8&idajuda=40' > </a>"; |
137 | 137 | janela = i3GEO.janela.cria( |
138 | 138 | "400px", |
139 | - "300px", | |
139 | + "320px", | |
140 | 140 | "", |
141 | 141 | "", |
142 | 142 | "", | ... | ... |
ferramentas/inseregrafico/index.js.php
... | ... | @@ -85,13 +85,13 @@ i3GEOF.insereGrafico = { |
85 | 85 | ins += '</div>'; |
86 | 86 | ins += '<div class="geralFerramentas" style="left:0px;top:0px;width:98%;height:86%;">'; |
87 | 87 | ins += ' <div class=guiaobj id="i3GEOinseregraficoguia1obj" style="left:1px;90%;display:none;">'; |
88 | - ins += ' <p>Escolha o tema com os dados:'; | |
88 | + ins += ' <p class="paragrafo">Escolha o tema com os dados:'; | |
89 | 89 | ins += ' <div id=i3GEOinseregraficotemasi style="display:block;position:relative;top:10px;left:0px;text-align:left;">Aguarde...'; |
90 | 90 | ins += ' </div>'; |
91 | 91 | ins += ' <div id=i3GEOinseregraficolistai class=digitar style="left:0px;top:20px;330px;height:80px;overflow:auto;display:block;">Escolha o tema para ver a lista de itens</div>'; |
92 | 92 | ins += ' <br><br><br>'; |
93 | 93 | ins += ' <input id=i3GEOinseregraficobotao1 size=35 type=button value="mostrar legenda no mapa" />'; |
94 | - ins += ' <div id=i3GEOinseregraficomen1 style=top:10px;left:1px >Marque os itens para compor as partes do gráfico: Edite os valores de cor (R,G,B) conforme o desejado. Após escolher os itens, clique no elemento do mapa para inserir o gráfico.</div>'; | |
94 | + ins += ' <div id=i3GEOinseregraficomen1 style=top:10px;left:1px ><p class="paragrafo">Marque os itens para compor as partes do gráfico: Edite os valores de cor (R,G,B) conforme o desejado. Após escolher os itens, clique no elemento do mapa para inserir o gráfico.</div>'; | |
95 | 95 | ins += ' </div>'; |
96 | 96 | ins += ' <div class=guiaobj id="i3GEOinseregraficoguia2obj" style="left:1px;display:none;">'; |
97 | 97 | ins += ' <table summary="" class=lista width="70%">'; | ... | ... |
ferramentas/planosmanejoflorestal/pesquisa.php
... | ... | @@ -129,7 +129,11 @@ function adicionatema($map_file,$dir_tmp,$imgdir,$nometemapontos,$itens,$valores |
129 | 129 | $def = array(); |
130 | 130 | foreach ($itens as $ni) |
131 | 131 | {$def[] = array($ni,"C","254");} |
132 | - xbase_create($nomeshp.".dbf", $def); | |
132 | + if(!function_exists(dbase_create)) | |
133 | + {xbase_create($nomeshp.".dbf", $def);} | |
134 | + else | |
135 | + {dbase_create($nomeshp.".dbf", $def);} | |
136 | + | |
133 | 137 | $dbname = $nomeshp.".dbf"; |
134 | 138 | $db=xbase_open($dbname,2); |
135 | 139 | $novoshpf = ms_newShapefileObj($nomeshp, $tipol); | ... | ... |
ferramentas/uploaddbf/upload.php
... | ... | @@ -87,7 +87,10 @@ if (isset($_FILES['filedbf']['name'])) |
87 | 87 | $def[] = array($i,"C","255"); |
88 | 88 | $conta++; |
89 | 89 | } |
90 | - $db = xbase_create($dirmap."/".$nome.".dbf", $def); | |
90 | + if(!function_exists(dbase_create)) | |
91 | + {xbase_create($dirmap."/".$nome.".dbf", $def);} | |
92 | + else | |
93 | + {dbase_create($dirmap."/".$nome.".dbf", $def);} | |
91 | 94 | //xbase_close($db); |
92 | 95 | //$db=xbase_open($dirmap."/".$nome.".dbf",2); |
93 | 96 | foreach($dados as $d){ | ... | ... |
menutemas/admin.db
No preview for this file type
ms_criamapa.php
... | ... | @@ -649,7 +649,10 @@ function insereWKTUrl() |
649 | 649 | $items = array("COORD"); |
650 | 650 | foreach ($items as $ni) |
651 | 651 | {$def[] = array($ni,"C","254");} |
652 | - xbase_create($nomeshp.".dbf", $def); | |
652 | + if(!function_exists(dbase_create)) | |
653 | + {xbase_create($nomeshp.".dbf", $def);} | |
654 | + else | |
655 | + {dbase_create($nomeshp.".dbf", $def);} | |
653 | 656 | $dbname = $nomeshp.".dbf"; |
654 | 657 | $db=xbase_open($dbname,2); |
655 | 658 | if ($tipol == 1) |
... | ... | @@ -713,7 +716,10 @@ function inserePontosUrl() |
713 | 716 | $items = array("COORD"); |
714 | 717 | foreach ($items as $ni) |
715 | 718 | {$def[] = array($ni,"C","254");} |
716 | - xbase_create($nomeshp.".dbf", $def); | |
719 | + if(!function_exists(dbase_create)) | |
720 | + {xbase_create($nomeshp.".dbf", $def);} | |
721 | + else | |
722 | + {dbase_create($nomeshp.".dbf", $def);} | |
717 | 723 | $dbname = $nomeshp.".dbf"; |
718 | 724 | $db=xbase_open($dbname,2); |
719 | 725 | $novoshpf = ms_newShapefileObj($nomeshp, $tipol); |
... | ... | @@ -779,7 +785,10 @@ function insereLinhasUrl() |
779 | 785 | $items = array("COORD"); |
780 | 786 | foreach ($items as $ni) |
781 | 787 | {$def[] = array($ni,"C","254");} |
782 | - xbase_create($nomeshp.".dbf", $def); | |
788 | + if(!function_exists(dbase_create)) | |
789 | + {xbase_create($nomeshp.".dbf", $def);} | |
790 | + else | |
791 | + {dbase_create($nomeshp.".dbf", $def);} | |
783 | 792 | $dbname = $nomeshp.".dbf"; |
784 | 793 | $db=xbase_open($dbname,2); |
785 | 794 | $novoshpf = ms_newShapefileObj($nomeshp, $tipol); |
... | ... | @@ -852,7 +861,10 @@ function inserePoligonosUrl() |
852 | 861 | $items = array("COORD"); |
853 | 862 | foreach ($items as $ni) |
854 | 863 | {$def[] = array($ni,"C","254");} |
855 | - xbase_create($nomeshp.".dbf", $def); | |
864 | + if(!function_exists(dbase_create)) | |
865 | + {xbase_create($nomeshp.".dbf", $def);} | |
866 | + else | |
867 | + {dbase_create($nomeshp.".dbf", $def);} | |
856 | 868 | $dbname = $nomeshp.".dbf"; |
857 | 869 | $db=xbase_open($dbname,2); |
858 | 870 | $novoshpf = ms_newShapefileObj($nomeshp, $tipol); | ... | ... |
pacotes/phpxbase/test_api.php
temas/testept.map
1 | -MAP | |
2 | -SYMBOLSET ../symbols/simbolos.sym | |
3 | -FONTSET "../symbols/fontes.txt" | |
1 | +MAP | |
2 | +SYMBOLSET ../symbols/simbolos.sym | |
3 | +FONTSET "../symbols/fontes.txt" | |
4 | 4 | LAYER |
5 | 5 | CONNECTION "" |
6 | 6 | DATA "c://ms4w/Apache/htdocs/geodados/brasil/limitespol/localidades.shp" |
... | ... | @@ -8,16 +8,18 @@ FONTSET "../symbols/fontes.txt" |
8 | 8 | "palletestep" "" |
9 | 9 | "palletefile" "" |
10 | 10 | "download" "SIM" |
11 | - "arquivodownload" "" | |
12 | - "ITENS" "NOMEMUN,ANOCRIA,ESTADO" | |
11 | + "arquivodownload" "" | |
12 | + "ITENS" "NOMEMUN,ANOCRIA,ESTADO" | |
13 | 13 | "ITENSDESC" "Nome,Ano,UF" |
14 | + "TEMA" "Teste de pontos" | |
15 | + "CLASSE" "SIM" | |
14 | 16 | END |
15 | 17 | NAME "testept" |
16 | 18 | STATUS OFF |
17 | 19 | TYPE POINT |
18 | 20 | UNITS METERS |
19 | 21 | CLASS |
20 | - NAME "" | |
22 | + NAME " " | |
21 | 23 | STYLE |
22 | 24 | ANGLE 360 |
23 | 25 | COLOR 255 0 0 | ... | ... |