import io
import unittest
from unittest import mock

from drb.drivers.http import DrbHttpNode
from drb.drivers.json import JsonBaseNode, JsonNode
from drb.drivers.wxs import WXSNodeOperation
from drb.drivers.xml import XmlNode
from drb.exceptions.core import DrbNotImplementationException
from drb.topics.resolver import _DrbFactoryResolver

from drb.drivers.wmts import WmtsServiceNode, \
    WmtsGetTilePredicate, WmtsGetFeatureInfoPredicate

stream_wmts = b'<?xml version="1.0" encoding="UTF-8"?><Capabilities xmlns="http://www.opengis.net/wmts/1.0" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wmts/1.0 http://schemas.opengis.net/wmts/1.0/wmtsGetCapabilities_response.xsd"><ows:ServiceIdentification><ows:Title>Service de visualisation WMTS Geoportail Publics</ows:Title><ows:Abstract>Ce service permet la visualisation de couches de donn\xc3\xa9es raster IGN au travers d\'un flux WMTS</ows:Abstract><ows:Keywords><ows:Keyword>WTMS</ows:Keyword><ows:Keyword>Unit\xc3\xa9s administratives</ows:Keyword><ows:Keyword>Limites administratives</ows:Keyword><ows:Keyword>Surfaces b\xc3\xa2ties</ows:Keyword><ows:Keyword>R\xc3\xa9seaux de transport</ows:Keyword><ows:Keyword>Routes</ows:Keyword><ows:Keyword>R\xc3\xa9seaux ferroviaires</ows:Keyword><ows:Keyword>A\xc3\xa9rodromes</ows:Keyword><ows:Keyword>R\xc3\xa9seau hydrographique</ows:Keyword><ows:Keyword>Parcelles cadastrales</ows:Keyword><ows:Keyword>B\xc3\xa2timents</ows:Keyword><ows:Keyword>Services d\'utilit\xc3\xa9 publique et services publics</ows:Keyword><ows:Keyword>R\xc3\xa9seaux de transport</ows:Keyword><ows:Keyword>Hydrographie</ows:Keyword><ows:Keyword>Photographies a\xc3\xa9riennes</ows:Keyword><ows:Keyword>Cartes</ows:Keyword><ows:Keyword>Cartes historiques</ows:Keyword><ows:Keyword>Altitude</ows:Keyword></ows:Keywords><ows:ServiceType>OGC WMTS</ows:ServiceType><ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion><ows:Fees>licences</ows:Fees><ows:AccessConstraints>Conditions G\xc3\xa9n\xc3\xa9rales d\'Utilisation disponibles ici : http://professionnels.ign.fr/doc/Conditions_d_utilisation_des_licences_et_des_services_en_ligne.pdf</ows:AccessConstraints></ows:ServiceIdentification><ows:ServiceProvider><ows:ProviderName>IGN</ows:ProviderName><ows:ProviderSite xlink:href=""/><ows:ServiceContact><ows:IndividualName>G\xc3\xa9oportail SAV</ows:IndividualName><ows:PositionName>custodian</ows:PositionName><ows:ContactInfo><ows:Phone><ows:Voice/><ows:Facsimile/></ows:Phone><ows:Address><ows:DeliveryPoint>73 avenue de Paris</ows:DeliveryPoint><ows:City>Saint Mand\xc3\xa9</ows:City><ows:AdministrativeArea/><ows:PostalCode>94160</ows:PostalCode><ows:Country>France</ows:Country><ows:ElectronicMailAddress>geop_services@geoportail.fr</ows:ElectronicMailAddress></ows:Address></ows:ContactInfo></ows:ServiceContact></ows:ServiceProvider><ows:OperationsMetadata><ows:Operation name="GetCapabilities"><ows:DCP><ows:HTTP><ows:Get xlink:href="https://wxs.ign.fr/essentiels/geoportail/wmts?"><ows:Constraint name="GetEncoding"><ows:AllowedValues><ows:Value>KVP</ows:Value></ows:AllowedValues></ows:Constraint></ows:Get></ows:HTTP></ows:DCP></ows:Operation><ows:Operation name="GetTile"><ows:DCP><ows:HTTP><ows:Get xlink:href="https://wxs.ign.fr/essentiels/geoportail/wmts?"><ows:Constraint name="GetEncoding"><ows:AllowedValues><ows:Value>KVP</ows:Value></ows:AllowedValues></ows:Constraint></ows:Get></ows:HTTP></ows:DCP></ows:Operation><ows:Operation name="GetFeatureInfo"><ows:DCP><ows:HTTP><ows:Get xlink:href="https://wxs.ign.fr/essentiels/geoportail/wmts?"><ows:Constraint name="GetEncoding"><ows:AllowedValues><ows:Value>KVP</ows:Value></ows:AllowedValues></ows:Constraint></ows:Get></ows:HTTP></ows:DCP></ows:Operation></ows:OperationsMetadata><Contents><Layer><ows:Title>ADMIN_EXPRESS</ows:Title><ows:Abstract>Limites administratives des collectivit\xc3\xa9s territoriales. R\xc3\xa9gions, d\xc3\xa9partements, cantons, communes, arrondissements (pour Paris, Lyon et Marseille) et \xc3\xa9tablissements publics de coop\xc3\xa9ration intercommunale (EPCI).</ows:Abstract><ows:Keywords><ows:Keyword>PM</ows:Keyword></ows:Keywords><ows:WGS84BoundingBox><ows:LowerCorner>-6.50391 40.9799</ows:LowerCorner><ows:UpperCorner>9.84375 51.2894</ows:UpperCorner></ows:WGS84BoundingBox><ows:Identifier>ADMIN_EXPRESS</ows:Identifier><Format>application/x-protobuf</Format><TileMatrixSetLink><TileMatrixSet>PM</TileMatrixSet><TileMatrixSetLimits><TileMatrixLimits><TileMatrix>6</TileMatrix><MinTileRow>21</MinTileRow><MaxTileRow>35</MaxTileRow><MinTileCol>20</MinTileCol><MaxTileCol>41</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>7</TileMatrix><MinTileRow>42</MinTileRow><MaxTileRow>71</MaxTileRow><MinTileCol>41</MinTileCol><MaxTileCol>83</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>8</TileMatrix><MinTileRow>85</MinTileRow><MaxTileRow>143</MaxTileRow><MinTileCol>83</MinTileCol><MaxTileCol>167</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>9</TileMatrix><MinTileRow>171</MinTileRow><MaxTileRow>287</MaxTileRow><MinTileCol>166</MinTileCol><MaxTileCol>335</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>10</TileMatrix><MinTileRow>342</MinTileRow><MaxTileRow>574</MaxTileRow><MinTileCol>332</MinTileCol><MaxTileCol>670</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>11</TileMatrix><MinTileRow>684</MinTileRow><MaxTileRow>1148</MaxTileRow><MinTileCol>664</MinTileCol><MaxTileCol>1341</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>12</TileMatrix><MinTileRow>1369</MinTileRow><MaxTileRow>2297</MaxTileRow><MinTileCol>1329</MinTileCol><MaxTileCol>2683</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>13</TileMatrix><MinTileRow>2738</MinTileRow><MaxTileRow>4594</MaxTileRow><MinTileCol>2658</MinTileCol><MaxTileCol>5366</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>14</TileMatrix><MinTileRow>5477</MinTileRow><MaxTileRow>9189</MaxTileRow><MinTileCol>5317</MinTileCol><MaxTileCol>10733</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>15</TileMatrix><MinTileRow>10955</MinTileRow><MaxTileRow>18378</MaxTileRow><MinTileCol>10634</MinTileCol><MaxTileCol>21467</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>16</TileMatrix><MinTileRow>21911</MinTileRow><MaxTileRow>36757</MaxTileRow><MinTileCol>21269</MinTileCol><MaxTileCol>42934</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>17</TileMatrix><MinTileRow>43822</MinTileRow><MaxTileRow>73515</MaxTileRow><MinTileCol>42539</MinTileCol><MaxTileCol>85869</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>18</TileMatrix><MinTileRow>87645</MinTileRow><MaxTileRow>147030</MaxTileRow><MinTileCol>85079</MinTileCol><MaxTileCol>171738</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>19</TileMatrix><MinTileRow>175290</MinTileRow><MaxTileRow>294060</MaxTileRow><MinTileCol>170158</MinTileCol><MaxTileCol>343476</MaxTileCol></TileMatrixLimits></TileMatrixSetLimits></TileMatrixSetLink></Layer><Layer><ows:Title>PCI vecteur</ows:Title><ows:Abstract>Plan cadastral informatis\xc3\xa9 vecteur de la DGFIP.</ows:Abstract><ows:Keywords><ows:Keyword>Parcelles cadastrales</ows:Keyword></ows:Keywords><ows:WGS84BoundingBox><ows:LowerCorner>-63.3725 -21.4756</ows:LowerCorner><ows:UpperCorner>55.9259 51.3121</ows:UpperCorner></ows:WGS84BoundingBox><ows:Identifier>CADASTRALPARCELS.PARCELLAIRE_EXPRESS</ows:Identifier><Style isDefault="true"><ows:Title>PCI vecteur</ows:Title><ows:Abstract>L\xc3\xa9gende de la couche PCI vecteur</ows:Abstract><ows:Keywords><ows:Keyword>CADASTRALPARCELS.PARCELLAIRE_EXPRESS</ows:Keyword></ows:Keywords><ows:Identifier>PCI vecteur</ows:Identifier><LegendURL format="image/png" height="183" maxScaleDenominator="10000000" minScaleDenominator="1" width="300" xlink:href="https://wxs.ign.fr/static/legends/CADASTRALPARCELS.PARCELLAIRE_EXPRESS.png"/></Style><Style><ows:Title>L\xc3\xa9gende g\xc3\xa9n\xc3\xa9rique</ows:Title><ows:Abstract>Fichier de l\xc3\xa9gende g\xc3\xa9n\xc3\xa9rique \xe2\x80\x93 pour la compatibilit\xc3\xa9 avec certains syst\xc3\xa8mes</ows:Abstract><ows:Keywords><ows:Keyword>D\xc3\xa9faut</ows:Keyword></ows:Keywords><ows:Identifier>normal</ows:Identifier><LegendURL format="image/jpeg" height="200" maxScaleDenominator="100000000" minScaleDenominator="200" width="200" xlink:href="https://wxs.ign.fr/static/legends/LEGEND.jpg"/></Style><Format>image/png</Format><InfoFormat>text/plain</InfoFormat><InfoFormat>text/html</InfoFormat><InfoFormat>text/xml</InfoFormat><InfoFormat>application/xml</InfoFormat><InfoFormat>application/json</InfoFormat><TileMatrixSetLink><TileMatrixSet>PM</TileMatrixSet><TileMatrixSetLimits><TileMatrixLimits><TileMatrix>0</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>0</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>0</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>1</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>1</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>1</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>2</TileMatrix><MinTileRow>1</MinTileRow><MaxTileRow>2</MaxTileRow><MinTileCol>1</MinTileCol><MaxTileCol>2</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>3</TileMatrix><MinTileRow>2</MinTileRow><MaxTileRow>4</MaxTileRow><MinTileCol>2</MinTileCol><MaxTileCol>5</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>4</TileMatrix><MinTileRow>5</MinTileRow><MaxTileRow>8</MaxTileRow><MinTileCol>5</MinTileCol><MaxTileCol>10</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>5</TileMatrix><MinTileRow>10</MinTileRow><MaxTileRow>17</MaxTileRow><MinTileCol>10</MinTileCol><MaxTileCol>20</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>6</TileMatrix><MinTileRow>21</MinTileRow><MaxTileRow>35</MaxTileRow><MinTileCol>20</MinTileCol><MaxTileCol>41</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>7</TileMatrix><MinTileRow>42</MinTileRow><MaxTileRow>71</MaxTileRow><MinTileCol>41</MinTileCol><MaxTileCol>83</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>8</TileMatrix><MinTileRow>85</MinTileRow><MaxTileRow>143</MaxTileRow><MinTileCol>82</MinTileCol><MaxTileCol>167</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>9</TileMatrix><MinTileRow>170</MinTileRow><MaxTileRow>287</MaxTileRow><MinTileCol>165</MinTileCol><MaxTileCol>335</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>10</TileMatrix><MinTileRow>341</MinTileRow><MaxTileRow>574</MaxTileRow><MinTileCol>331</MinTileCol><MaxTileCol>671</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>11</TileMatrix><MinTileRow>682</MinTileRow><MaxTileRow>1149</MaxTileRow><MinTileCol>663</MinTileCol><MaxTileCol>1342</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>12</TileMatrix><MinTileRow>1365</MinTileRow><MaxTileRow>2298</MaxTileRow><MinTileCol>1326</MinTileCol><MaxTileCol>2684</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>13</TileMatrix><MinTileRow>2731</MinTileRow><MaxTileRow>4596</MaxTileRow><MinTileCol>2653</MinTileCol><MaxTileCol>5368</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>14</TileMatrix><MinTileRow>5462</MinTileRow><MaxTileRow>9193</MaxTileRow><MinTileCol>5307</MinTileCol><MaxTileCol>10737</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>15</TileMatrix><MinTileRow>10924</MinTileRow><MaxTileRow>18386</MaxTileRow><MinTileCol>10615</MinTileCol><MaxTileCol>21474</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>16</TileMatrix><MinTileRow>21849</MinTileRow><MaxTileRow>36772</MaxTileRow><MinTileCol>21231</MinTileCol><MaxTileCol>42948</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>17</TileMatrix><MinTileRow>43698</MinTileRow><MaxTileRow>73544</MaxTileRow><MinTileCol>42462</MinTileCol><MaxTileCol>85897</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>18</TileMatrix><MinTileRow>87397</MinTileRow><MaxTileRow>147089</MaxTileRow><MinTileCol>84925</MinTileCol><MaxTileCol>171795</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>19</TileMatrix><MinTileRow>174795</MinTileRow><MaxTileRow>294179</MaxTileRow><MinTileCol>169851</MinTileCol><MaxTileCol>343591</MaxTileCol></TileMatrixLimits></TileMatrixSetLimits></TileMatrixSetLink></Layer><Layer><ows:Title>Plan IGN v2</ows:Title><ows:Abstract>Cartographie multi-\xc3\xa9chelles sur le territoire national, issue des bases de donn\xc3\xa9es vecteur de l\xe2\x80\x99IGN, mis \xc3\xa0 jour r\xc3\xa9guli\xc3\xa8rement et r\xc3\xa9alis\xc3\xa9e selon un processus enti\xc3\xa8rement automatis\xc3\xa9.</ows:Abstract><ows:Keywords><ows:Keyword>Plan IGN V2</ows:Keyword></ows:Keywords><ows:WGS84BoundingBox><ows:LowerCorner>-175 -85</ows:LowerCorner><ows:UpperCorner>175 85</ows:UpperCorner></ows:WGS84BoundingBox><ows:Identifier>GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2</ows:Identifier><Style isDefault="true"><ows:Title>L\xc3\xa9gende g\xc3\xa9n\xc3\xa9rique</ows:Title><ows:Abstract>Fichier de l\xc3\xa9gende g\xc3\xa9n\xc3\xa9rique \xe2\x80\x93 pour la compatibilit\xc3\xa9 avec certains syst\xc3\xa8mes</ows:Abstract><ows:Keywords><ows:Keyword>D\xc3\xa9faut</ows:Keyword></ows:Keywords><ows:Identifier>normal</ows:Identifier><LegendURL format="image/jpeg" height="200" maxScaleDenominator="100000000" minScaleDenominator="200" width="200" xlink:href="https://wxs.ign.fr/static/legends/LEGEND.jpg"/></Style><Format>image/png</Format><TileMatrixSetLink><TileMatrixSet>PM</TileMatrixSet><TileMatrixSetLimits><TileMatrixLimits><TileMatrix>0</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>1</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>0</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>1</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>2</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>2</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>2</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>4</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>4</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>3</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>8</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>8</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>4</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>16</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>16</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>5</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>32</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>32</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>6</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>64</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>64</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>7</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>128</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>128</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>8</TileMatrix><MinTileRow>80</MinTileRow><MaxTileRow>144</MaxTileRow><MinTileCol>80</MinTileCol><MaxTileCol>168</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>9</TileMatrix><MinTileRow>168</MinTileRow><MaxTileRow>288</MaxTileRow><MinTileCol>160</MinTileCol><MaxTileCol>336</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>10</TileMatrix><MinTileRow>336</MinTileRow><MaxTileRow>576</MaxTileRow><MinTileCol>328</MinTileCol><MaxTileCol>672</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>11</TileMatrix><MinTileRow>680</MinTileRow><MaxTileRow>1152</MaxTileRow><MinTileCol>664</MinTileCol><MaxTileCol>1344</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>12</TileMatrix><MinTileRow>1368</MinTileRow><MaxTileRow>2304</MaxTileRow><MinTileCol>1328</MinTileCol><MaxTileCol>2688</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>13</TileMatrix><MinTileRow>2736</MinTileRow><MaxTileRow>4600</MaxTileRow><MinTileCol>2656</MinTileCol><MaxTileCol>5376</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>14</TileMatrix><MinTileRow>5472</MinTileRow><MaxTileRow>9200</MaxTileRow><MinTileCol>5312</MinTileCol><MaxTileCol>10744</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>15</TileMatrix><MinTileRow>10952</MinTileRow><MaxTileRow>18392</MaxTileRow><MinTileCol>10624</MinTileCol><MaxTileCol>21480</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>16</TileMatrix><MinTileRow>21904</MinTileRow><MaxTileRow>36784</MaxTileRow><MinTileCol>21248</MinTileCol><MaxTileCol>42952</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>17</TileMatrix><MinTileRow>43816</MinTileRow><MaxTileRow>73568</MaxTileRow><MinTileCol>42496</MinTileCol><MaxTileCol>85904</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>18</TileMatrix><MinTileRow>87640</MinTileRow><MaxTileRow>147128</MaxTileRow><MinTileCol>85000</MinTileCol><MaxTileCol>171808</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>19</TileMatrix><MinTileRow>175288</MinTileRow><MaxTileRow>294248</MaxTileRow><MinTileCol>170008</MinTileCol><MaxTileCol>343616</MaxTileCol></TileMatrixLimits></TileMatrixSetLimits></TileMatrixSetLink></Layer><Layer><ows:Title>Photographies a\xc3\xa9riennes</ows:Title><ows:Abstract>Photographies a\xc3\xa9riennes</ows:Abstract><ows:Keywords><ows:Keyword>Photographies</ows:Keyword></ows:Keywords><ows:WGS84BoundingBox><ows:LowerCorner>-179.5 -75</ows:LowerCorner><ows:UpperCorner>179.5 75</ows:UpperCorner></ows:WGS84BoundingBox><ows:Identifier>ORTHOIMAGERY.ORTHOPHOTOS</ows:Identifier><Style isDefault="true"><ows:Title>L\xc3\xa9gende g\xc3\xa9n\xc3\xa9rique</ows:Title><ows:Abstract>Fichier de l\xc3\xa9gende g\xc3\xa9n\xc3\xa9rique \xe2\x80\x93 pour la compatibilit\xc3\xa9 avec certains syst\xc3\xa8mes</ows:Abstract><ows:Keywords><ows:Keyword>D\xc3\xa9faut</ows:Keyword></ows:Keywords><ows:Identifier>normal</ows:Identifier><LegendURL format="image/jpeg" height="200" maxScaleDenominator="100000000" minScaleDenominator="200" width="200" xlink:href="https://wxs.ign.fr/static/legends/LEGEND.jpg"/></Style><Format>image/jpeg</Format><InfoFormat>text/plain</InfoFormat><InfoFormat>text/html</InfoFormat><InfoFormat>text/xml</InfoFormat><InfoFormat>application/xml</InfoFormat><InfoFormat>application/json</InfoFormat><TileMatrixSetLink><TileMatrixSet>PM</TileMatrixSet><TileMatrixSetLimits><TileMatrixLimits><TileMatrix>0</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>1</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>1</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>1</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>2</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>2</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>2</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>4</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>4</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>3</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>8</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>8</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>4</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>16</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>16</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>5</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>32</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>32</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>6</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>64</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>64</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>7</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>128</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>128</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>8</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>256</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>256</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>9</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>512</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>512</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>10</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>1024</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>1024</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>11</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>2048</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>2048</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>12</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>4096</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>4096</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>13</TileMatrix><MinTileRow>2736</MinTileRow><MaxTileRow>4607</MaxTileRow><MinTileCol>32</MinTileCol><MaxTileCol>7871</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>14</TileMatrix><MinTileRow>5472</MinTileRow><MaxTileRow>9247</MaxTileRow><MinTileCol>80</MinTileCol><MaxTileCol>15807</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>15</TileMatrix><MinTileRow>10944</MinTileRow><MaxTileRow>18479</MaxTileRow><MinTileCol>160</MinTileCol><MaxTileCol>31615</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>16</TileMatrix><MinTileRow>21904</MinTileRow><MaxTileRow>37023</MaxTileRow><MinTileCol>320</MinTileCol><MaxTileCol>63311</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>17</TileMatrix><MinTileRow>43808</MinTileRow><MaxTileRow>74047</MaxTileRow><MinTileCol>656</MinTileCol><MaxTileCol>126655</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>18</TileMatrix><MinTileRow>87616</MinTileRow><MaxTileRow>148111</MaxTileRow><MinTileCol>1312</MinTileCol><MaxTileCol>253375</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>19</TileMatrix><MinTileRow>175248</MinTileRow><MaxTileRow>294063</MaxTileRow><MinTileCol>170144</MinTileCol><MaxTileCol>343487</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>20</TileMatrix><MinTileRow>357008</MinTileRow><MaxTileRow>384687</MaxTileRow><MinTileCol>524400</MinTileCol><MaxTileCol>540927</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>21</TileMatrix><MinTileRow>714032</MinTileRow><MaxTileRow>768783</MaxTileRow><MinTileCol>1048816</MinTileCol><MaxTileCol>1081775</MaxTileCol></TileMatrixLimits></TileMatrixSetLimits></TileMatrixSetLink></Layer><Layer><ows:Title>Plan IGN</ows:Title><ows:Abstract>BDUni tuil\xc3\xa9e</ows:Abstract><ows:Keywords><ows:Keyword>PM</ows:Keyword></ows:Keywords><ows:WGS84BoundingBox><ows:LowerCorner>-6.50391 40.9799</ows:LowerCorner><ows:UpperCorner>9.84375 51.2894</ows:UpperCorner></ows:WGS84BoundingBox><ows:Identifier>PLAN.IGN</ows:Identifier><Format>application/x-protobuf</Format><TileMatrixSetLink><TileMatrixSet>PM</TileMatrixSet><TileMatrixSetLimits><TileMatrixLimits><TileMatrix>0</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>1</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>1</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>1</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>2</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>2</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>2</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>4</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>4</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>3</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>8</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>8</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>4</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>16</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>16</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>5</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>32</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>32</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>6</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>64</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>64</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>7</TileMatrix><MinTileRow>0</MinTileRow><MaxTileRow>128</MaxTileRow><MinTileCol>0</MinTileCol><MaxTileCol>128</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>8</TileMatrix><MinTileRow>64</MinTileRow><MaxTileRow>192</MaxTileRow><MinTileCol>64</MinTileCol><MaxTileCol>192</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>9</TileMatrix><MinTileRow>128</MinTileRow><MaxTileRow>320</MaxTileRow><MinTileCol>128</MinTileCol><MaxTileCol>384</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>10</TileMatrix><MinTileRow>320</MinTileRow><MaxTileRow>576</MaxTileRow><MinTileCol>320</MinTileCol><MaxTileCol>704</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>11</TileMatrix><MinTileRow>640</MinTileRow><MaxTileRow>1152</MaxTileRow><MinTileCol>640</MinTileCol><MaxTileCol>1344</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>12</TileMatrix><MinTileRow>1344</MinTileRow><MaxTileRow>2304</MaxTileRow><MinTileCol>1280</MinTileCol><MaxTileCol>2688</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>13</TileMatrix><MinTileRow>2688</MinTileRow><MaxTileRow>4608</MaxTileRow><MinTileCol>2624</MinTileCol><MaxTileCol>5376</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>14</TileMatrix><MinTileRow>5440</MinTileRow><MaxTileRow>9216</MaxTileRow><MinTileCol>5312</MinTileCol><MaxTileCol>10752</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>15</TileMatrix><MinTileRow>10944</MinTileRow><MaxTileRow>18432</MaxTileRow><MinTileCol>10624</MinTileCol><MaxTileCol>21504</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>16</TileMatrix><MinTileRow>21888</MinTileRow><MaxTileRow>36800</MaxTileRow><MinTileCol>21248</MinTileCol><MaxTileCol>42976</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>17</TileMatrix><MinTileRow>43776</MinTileRow><MaxTileRow>73600</MaxTileRow><MinTileCol>42496</MinTileCol><MaxTileCol>85952</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>18</TileMatrix><MinTileRow>87616</MinTileRow><MaxTileRow>147136</MaxTileRow><MinTileCol>84992</MinTileCol><MaxTileCol>171840</MaxTileCol></TileMatrixLimits><TileMatrixLimits><TileMatrix>19</TileMatrix><MinTileRow>175232</MinTileRow><MaxTileRow>294272</MaxTileRow><MinTileCol>169984</MinTileCol><MaxTileCol>343616</MaxTileCol></TileMatrixLimits></TileMatrixSetLimits></TileMatrixSetLink></Layer><TileMatrixSet><ows:Identifier>LAMB93</ows:Identifier><ows:SupportedCRS>EPSG:2154</ows:SupportedCRS><TileMatrix><ows:Identifier>0</ows:Identifier><ScaleDenominator>373497230.5353357571875677</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>2</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>1</ows:Identifier><ScaleDenominator>186705472.6921089404495433</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>2</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>2</ows:Identifier><ScaleDenominator>93341025.2806978682347108</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>2</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>3</ows:Identifier><ScaleDenominator>46667469.2207142901243060</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>3</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>4</ows:Identifier><ScaleDenominator>23332959.3004053602435306</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>5</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>5</ows:Identifier><ScaleDenominator>11666284.0159382160591122</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>3</MatrixWidth><MatrixHeight>9</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>6</ows:Identifier><ScaleDenominator>5833092.8735621436167094</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>5</MatrixWidth><MatrixHeight>16</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>7</ows:Identifier><ScaleDenominator>2916534.1249500003143567</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8</MatrixWidth><MatrixHeight>30</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>8</ows:Identifier><ScaleDenominator>1458263.9809885714915936</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>14</MatrixWidth><MatrixHeight>59</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>9</ows:Identifier><ScaleDenominator>729131.2196817857459905</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>26</MatrixWidth><MatrixHeight>117</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>10</ows:Identifier><ScaleDenominator>364565.4170828571558332</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>51</MatrixWidth><MatrixHeight>232</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>11</ows:Identifier><ScaleDenominator>182282.6603450000154965</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>100</MatrixWidth><MatrixHeight>462</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>12</ows:Identifier><ScaleDenominator>91141.3181225000130965</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>199</MatrixWidth><MatrixHeight>922</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>13</ows:Identifier><ScaleDenominator>45570.6560485714301016</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>396</MatrixWidth><MatrixHeight>1842</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>14</ows:Identifier><ScaleDenominator>22785.3272714285733418</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>791</MatrixWidth><MatrixHeight>3682</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>15</ows:Identifier><ScaleDenominator>11392.6634475000012445</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1581</MatrixWidth><MatrixHeight>7363</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>16</ows:Identifier><ScaleDenominator>5696.3316767857149872</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>3161</MatrixWidth><MatrixHeight>14724</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>17</ows:Identifier><ScaleDenominator>2848.1658267857144691</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>6321</MatrixWidth><MatrixHeight>29447</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>18</ows:Identifier><ScaleDenominator>1424.0829103571428959</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>12641</MatrixWidth><MatrixHeight>58892</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>19</ows:Identifier><ScaleDenominator>712.0414546428572171</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>25281</MatrixWidth><MatrixHeight>117782</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>20</ows:Identifier><ScaleDenominator>356.0207275000000519</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>50561</MatrixWidth><MatrixHeight>235563</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>21</ows:Identifier><ScaleDenominator>178.0103635714285826</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>101121</MatrixWidth><MatrixHeight>471125</MatrixHeight></TileMatrix></TileMatrixSet><TileMatrixSet><ows:Identifier>LAMB93_1M_MNT</ows:Identifier><ows:SupportedCRS>IGNF:LAMB93</ows:SupportedCRS><TileMatrix><ows:Identifier>0</ows:Identifier><ScaleDenominator>3571428.5714285717415351</ScaleDenominator><TopLeftCorner>-500.0000000000000000 12000500.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4</MatrixWidth><MatrixHeight>23</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>1</ows:Identifier><ScaleDenominator>1785714.2857142858707675</ScaleDenominator><TopLeftCorner>-250.0000000000000000 12000250.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8</MatrixWidth><MatrixHeight>46</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>2</ows:Identifier><ScaleDenominator>892857.1428571429353838</ScaleDenominator><TopLeftCorner>-125.0000000000000000 12000125.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>16</MatrixWidth><MatrixHeight>92</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>3</ows:Identifier><ScaleDenominator>357142.8571428571741535</ScaleDenominator><TopLeftCorner>-50.0000000000000000 12000050.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>40</MatrixWidth><MatrixHeight>230</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>4</ows:Identifier><ScaleDenominator>267857.1428571428806151</ScaleDenominator><TopLeftCorner>-37.5000000000000000 12000037.5000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>54</MatrixWidth><MatrixHeight>307</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>5</ows:Identifier><ScaleDenominator>178571.4285714285870768</ScaleDenominator><TopLeftCorner>-25.0000000000000000 12000025.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>80</MatrixWidth><MatrixHeight>460</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>6</ows:Identifier><ScaleDenominator>89285.7142857142935384</ScaleDenominator><TopLeftCorner>-12.5000000000000000 12000012.5000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>160</MatrixWidth><MatrixHeight>920</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>7</ows:Identifier><ScaleDenominator>17857.1428571428587073</ScaleDenominator><TopLeftCorner>-2.5000000000000000 12000002.5000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>800</MatrixWidth><MatrixHeight>4600</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>8</ows:Identifier><ScaleDenominator>3571.4285714285717415</ScaleDenominator><TopLeftCorner>-0.5000000000000000 12000000.5000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4000</MatrixWidth><MatrixHeight>23000</MatrixHeight></TileMatrix></TileMatrixSet><TileMatrixSet><ows:Identifier>LAMB93_5cm</ows:Identifier><ows:SupportedCRS>IGNF:LAMB93</ows:SupportedCRS><TileMatrix><ows:Identifier>0</ows:Identifier><ScaleDenominator>748982857.1428572500590235</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>1</ows:Identifier><ScaleDenominator>374491428.5714286250295117</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>2</ows:Identifier><ScaleDenominator>187245714.2857143125147559</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>3</ows:Identifier><ScaleDenominator>93622857.1428571562573779</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>2</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>4</ows:Identifier><ScaleDenominator>46811428.5714285781286890</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>4</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>5</ows:Identifier><ScaleDenominator>23405714.2857142890643445</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>7</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>6</ows:Identifier><ScaleDenominator>11702857.1428571445321722</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>13</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>7</ows:Identifier><ScaleDenominator>5851428.5714285722660861</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4</MatrixWidth><MatrixHeight>26</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>8</ows:Identifier><ScaleDenominator>2925714.2857142861330431</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>7</MatrixWidth><MatrixHeight>52</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>9</ows:Identifier><ScaleDenominator>1462857.1428571430665215</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>13</MatrixWidth><MatrixHeight>103</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>10</ows:Identifier><ScaleDenominator>731428.5714285715332608</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>25</MatrixWidth><MatrixHeight>206</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>11</ows:Identifier><ScaleDenominator>365714.2857142857666304</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>50</MatrixWidth><MatrixHeight>411</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>12</ows:Identifier><ScaleDenominator>182857.1428571428833152</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>99</MatrixWidth><MatrixHeight>822</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>13</ows:Identifier><ScaleDenominator>91428.5714285714416576</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>197</MatrixWidth><MatrixHeight>1643</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>14</ows:Identifier><ScaleDenominator>45714.2857142857208288</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>394</MatrixWidth><MatrixHeight>3285</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>15</ows:Identifier><ScaleDenominator>22857.1428571428604144</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>788</MatrixWidth><MatrixHeight>6569</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>16</ows:Identifier><ScaleDenominator>11428.5714285714302072</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1575</MatrixWidth><MatrixHeight>13138</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>17</ows:Identifier><ScaleDenominator>5714.2857142857151036</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>3150</MatrixWidth><MatrixHeight>26276</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>18</ows:Identifier><ScaleDenominator>2857.1428571428575518</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>6300</MatrixWidth><MatrixHeight>52552</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>19</ows:Identifier><ScaleDenominator>1428.5714285714287759</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>12600</MatrixWidth><MatrixHeight>105102</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>20</ows:Identifier><ScaleDenominator>714.2857142857143879</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>25200</MatrixWidth><MatrixHeight>210205</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>21</ows:Identifier><ScaleDenominator>357.1428571428571940</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>50400</MatrixWidth><MatrixHeight>420409</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>22</ows:Identifier><ScaleDenominator>178.5714285714285970</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>100800</MatrixWidth><MatrixHeight>840818</MatrixHeight></TileMatrix></TileMatrixSet><TileMatrixSet><ows:Identifier>LAMB93_5cm_EPSG</ows:Identifier><ows:SupportedCRS>EPSG:2154</ows:SupportedCRS><TileMatrix><ows:Identifier>0</ows:Identifier><ScaleDenominator>748982857.1428572500590235</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>1</ows:Identifier><ScaleDenominator>374491428.5714286250295117</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>2</ows:Identifier><ScaleDenominator>187245714.2857143125147559</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>3</ows:Identifier><ScaleDenominator>93622857.1428571562573779</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>2</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>4</ows:Identifier><ScaleDenominator>46811428.5714285781286890</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>4</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>5</ows:Identifier><ScaleDenominator>23405714.2857142890643445</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>7</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>6</ows:Identifier><ScaleDenominator>11702857.1428571445321722</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>13</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>7</ows:Identifier><ScaleDenominator>5851428.5714285722660861</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4</MatrixWidth><MatrixHeight>26</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>8</ows:Identifier><ScaleDenominator>2925714.2857142861330431</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>7</MatrixWidth><MatrixHeight>52</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>9</ows:Identifier><ScaleDenominator>1462857.1428571430665215</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>13</MatrixWidth><MatrixHeight>103</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>10</ows:Identifier><ScaleDenominator>731428.5714285715332608</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>25</MatrixWidth><MatrixHeight>206</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>11</ows:Identifier><ScaleDenominator>365714.2857142857666304</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>50</MatrixWidth><MatrixHeight>411</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>12</ows:Identifier><ScaleDenominator>182857.1428571428833152</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>99</MatrixWidth><MatrixHeight>822</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>13</ows:Identifier><ScaleDenominator>91428.5714285714416576</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>197</MatrixWidth><MatrixHeight>1643</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>14</ows:Identifier><ScaleDenominator>45714.2857142857208288</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>394</MatrixWidth><MatrixHeight>3285</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>15</ows:Identifier><ScaleDenominator>22857.1428571428604144</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>788</MatrixWidth><MatrixHeight>6569</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>16</ows:Identifier><ScaleDenominator>11428.5714285714302072</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1575</MatrixWidth><MatrixHeight>13138</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>17</ows:Identifier><ScaleDenominator>5714.2857142857151036</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>3150</MatrixWidth><MatrixHeight>26276</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>18</ows:Identifier><ScaleDenominator>2857.1428571428575518</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>6300</MatrixWidth><MatrixHeight>52552</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>19</ows:Identifier><ScaleDenominator>1428.5714285714287759</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>12600</MatrixWidth><MatrixHeight>105102</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>20</ows:Identifier><ScaleDenominator>714.2857142857143879</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>25200</MatrixWidth><MatrixHeight>210205</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>21</ows:Identifier><ScaleDenominator>357.1428571428571940</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>50400</MatrixWidth><MatrixHeight>420409</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>22</ows:Identifier><ScaleDenominator>178.5714285714285970</ScaleDenominator><TopLeftCorner>0.0000000000000000 12000000.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>100800</MatrixWidth><MatrixHeight>840818</MatrixHeight></TileMatrix></TileMatrixSet><TileMatrixSet><ows:Identifier>PM</ows:Identifier><ows:SupportedCRS>EPSG:3857</ows:SupportedCRS><TileMatrix><ows:Identifier>0</ows:Identifier><ScaleDenominator>559082264.0287178958533332</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>1</ows:Identifier><ScaleDenominator>279541132.0143588959472254</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>2</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>2</ows:Identifier><ScaleDenominator>139770566.0071793960087234</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4</MatrixWidth><MatrixHeight>4</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>3</ows:Identifier><ScaleDenominator>69885283.0035897239868063</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8</MatrixWidth><MatrixHeight>8</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>4</ows:Identifier><ScaleDenominator>34942641.5017948619934032</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>16</MatrixWidth><MatrixHeight>16</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>5</ows:Identifier><ScaleDenominator>17471320.7508974309967016</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>32</MatrixWidth><MatrixHeight>32</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>6</ows:Identifier><ScaleDenominator>8735660.3754487154983508</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>64</MatrixWidth><MatrixHeight>64</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>7</ows:Identifier><ScaleDenominator>4367830.1877243577491754</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>128</MatrixWidth><MatrixHeight>128</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>8</ows:Identifier><ScaleDenominator>2183915.0938621788745877</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>256</MatrixWidth><MatrixHeight>256</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>9</ows:Identifier><ScaleDenominator>1091957.5469310886252288</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>512</MatrixWidth><MatrixHeight>512</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>10</ows:Identifier><ScaleDenominator>545978.7734655447186469</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1024</MatrixWidth><MatrixHeight>1024</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>11</ows:Identifier><ScaleDenominator>272989.3867327723085907</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2048</MatrixWidth><MatrixHeight>2048</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>12</ows:Identifier><ScaleDenominator>136494.6933663861796617</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4096</MatrixWidth><MatrixHeight>4096</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>13</ows:Identifier><ScaleDenominator>68247.3466831930771477</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8192</MatrixWidth><MatrixHeight>8192</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>14</ows:Identifier><ScaleDenominator>34123.6733415965449154</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>16384</MatrixWidth><MatrixHeight>16384</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>15</ows:Identifier><ScaleDenominator>17061.8366707982724577</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>32768</MatrixWidth><MatrixHeight>32768</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>16</ows:Identifier><ScaleDenominator>8530.9183353991362289</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>65536</MatrixWidth><MatrixHeight>65536</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>17</ows:Identifier><ScaleDenominator>4265.4591676995681144</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>131072</MatrixWidth><MatrixHeight>131072</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>18</ows:Identifier><ScaleDenominator>2132.7295838497840572</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>262144</MatrixWidth><MatrixHeight>262144</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>19</ows:Identifier><ScaleDenominator>1066.3647919248918304</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>524288</MatrixWidth><MatrixHeight>524288</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>20</ows:Identifier><ScaleDenominator>533.1823959624461134</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1048576</MatrixWidth><MatrixHeight>1048576</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>21</ows:Identifier><ScaleDenominator>266.5911979812228585</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2097152</MatrixWidth><MatrixHeight>2097152</MatrixHeight></TileMatrix></TileMatrixSet><TileMatrixSet><ows:Identifier>PM_5cm</ows:Identifier><ows:SupportedCRS>EPSG:3857</ows:SupportedCRS><TileMatrix><ows:Identifier>0</ows:Identifier><ScaleDenominator>559082264.0287178958533332</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>1</ows:Identifier><ScaleDenominator>279541132.0143588959472254</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>2</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>2</ows:Identifier><ScaleDenominator>139770566.0071793960087234</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4</MatrixWidth><MatrixHeight>4</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>3</ows:Identifier><ScaleDenominator>69885283.0035897239868063</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8</MatrixWidth><MatrixHeight>8</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>4</ows:Identifier><ScaleDenominator>34942641.5017948619934032</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>16</MatrixWidth><MatrixHeight>16</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>5</ows:Identifier><ScaleDenominator>17471320.7508974309967016</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>32</MatrixWidth><MatrixHeight>32</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>6</ows:Identifier><ScaleDenominator>8735660.3754487154983508</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>64</MatrixWidth><MatrixHeight>64</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>7</ows:Identifier><ScaleDenominator>4367830.1877243577491754</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>128</MatrixWidth><MatrixHeight>128</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>8</ows:Identifier><ScaleDenominator>2183915.0938621788745877</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>256</MatrixWidth><MatrixHeight>256</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>9</ows:Identifier><ScaleDenominator>1091957.5469310886252288</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>512</MatrixWidth><MatrixHeight>512</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>10</ows:Identifier><ScaleDenominator>545978.7734655447186469</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1024</MatrixWidth><MatrixHeight>1024</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>11</ows:Identifier><ScaleDenominator>272989.3867327723085907</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2048</MatrixWidth><MatrixHeight>2048</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>12</ows:Identifier><ScaleDenominator>136494.6933663861796617</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4096</MatrixWidth><MatrixHeight>4096</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>13</ows:Identifier><ScaleDenominator>68247.3466831930771477</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8192</MatrixWidth><MatrixHeight>8192</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>14</ows:Identifier><ScaleDenominator>34123.6733415965449154</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>16384</MatrixWidth><MatrixHeight>16384</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>15</ows:Identifier><ScaleDenominator>17061.8366707982724577</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>32768</MatrixWidth><MatrixHeight>32768</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>16</ows:Identifier><ScaleDenominator>8530.9183353991362289</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>65536</MatrixWidth><MatrixHeight>65536</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>17</ows:Identifier><ScaleDenominator>4265.4591676995681144</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>131072</MatrixWidth><MatrixHeight>131072</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>18</ows:Identifier><ScaleDenominator>2132.7295838497840572</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>262144</MatrixWidth><MatrixHeight>262144</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>19</ows:Identifier><ScaleDenominator>1066.3647919248918304</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>524288</MatrixWidth><MatrixHeight>524288</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>20</ows:Identifier><ScaleDenominator>533.1823959624461134</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1048576</MatrixWidth><MatrixHeight>1048576</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>21</ows:Identifier><ScaleDenominator>266.5911979812228585</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2097152</MatrixWidth><MatrixHeight>2097152</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>22</ows:Identifier><ScaleDenominator>133.2955989906114292</ScaleDenominator><TopLeftCorner>-20037508.3427892476320267 20037508.3427892476320267</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4194304</MatrixWidth><MatrixHeight>4194304</MatrixHeight></TileMatrix></TileMatrixSet><TileMatrixSet><ows:Identifier>WGS84G</ows:Identifier><ows:SupportedCRS>IGNF:WGS84G</ows:SupportedCRS><TileMatrix><ows:Identifier>0</ows:Identifier><ScaleDenominator>279541132.0143588675418869</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>1</ows:Identifier><ScaleDenominator>139770566.0071794337709434</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4</MatrixWidth><MatrixHeight>2</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>2</ows:Identifier><ScaleDenominator>69885283.0035897168854717</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8</MatrixWidth><MatrixHeight>4</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>3</ows:Identifier><ScaleDenominator>34942641.5017948584427359</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>16</MatrixWidth><MatrixHeight>8</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>4</ows:Identifier><ScaleDenominator>17471320.7508974292213679</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>32</MatrixWidth><MatrixHeight>16</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>5</ows:Identifier><ScaleDenominator>8735660.3754487146106840</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>64</MatrixWidth><MatrixHeight>32</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>6</ows:Identifier><ScaleDenominator>4367830.1877243573053420</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>128</MatrixWidth><MatrixHeight>64</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>7</ows:Identifier><ScaleDenominator>2183915.0938621786526710</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>256</MatrixWidth><MatrixHeight>128</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>8</ows:Identifier><ScaleDenominator>1091957.5469310893263355</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>512</MatrixWidth><MatrixHeight>256</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>9</ows:Identifier><ScaleDenominator>545978.7734655446631677</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1024</MatrixWidth><MatrixHeight>512</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>10</ows:Identifier><ScaleDenominator>272989.3867327723315839</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2048</MatrixWidth><MatrixHeight>1024</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>11</ows:Identifier><ScaleDenominator>136494.6933663861657919</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4096</MatrixWidth><MatrixHeight>2048</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>12</ows:Identifier><ScaleDenominator>68247.3466831930828960</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8192</MatrixWidth><MatrixHeight>4096</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>13</ows:Identifier><ScaleDenominator>34123.6733415965414480</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>16384</MatrixWidth><MatrixHeight>8192</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>14</ows:Identifier><ScaleDenominator>17061.8366707982707240</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>32768</MatrixWidth><MatrixHeight>16384</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>15</ows:Identifier><ScaleDenominator>8530.9183353991353620</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>65536</MatrixWidth><MatrixHeight>32768</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>16</ows:Identifier><ScaleDenominator>4265.4591676995676810</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>131072</MatrixWidth><MatrixHeight>65536</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>17</ows:Identifier><ScaleDenominator>2132.7295838497838405</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>262144</MatrixWidth><MatrixHeight>131072</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>18</ows:Identifier><ScaleDenominator>1066.3647919248919202</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>524288</MatrixWidth><MatrixHeight>262144</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>19</ows:Identifier><ScaleDenominator>533.1823959624459601</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1048576</MatrixWidth><MatrixHeight>524288</MatrixHeight></TileMatrix></TileMatrixSet><TileMatrixSet><ows:Identifier>WGS84G_PO</ows:Identifier><ows:SupportedCRS>IGNF:WGS84G</ows:SupportedCRS><TileMatrix><ows:Identifier>0</ows:Identifier><ScaleDenominator>279541132.0143588675418869</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2</MatrixWidth><MatrixHeight>1</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>1</ows:Identifier><ScaleDenominator>139770566.0071794337709434</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4</MatrixWidth><MatrixHeight>2</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>2</ows:Identifier><ScaleDenominator>69885283.0035897168854717</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8</MatrixWidth><MatrixHeight>4</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>3</ows:Identifier><ScaleDenominator>34942641.5017948584427359</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>16</MatrixWidth><MatrixHeight>8</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>4</ows:Identifier><ScaleDenominator>17471320.7508974292213679</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>32</MatrixWidth><MatrixHeight>16</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>5</ows:Identifier><ScaleDenominator>8735660.3754487146106840</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>64</MatrixWidth><MatrixHeight>32</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>6</ows:Identifier><ScaleDenominator>4367830.1877243573053420</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>128</MatrixWidth><MatrixHeight>64</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>7</ows:Identifier><ScaleDenominator>2183915.0938621786526710</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>256</MatrixWidth><MatrixHeight>128</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>8</ows:Identifier><ScaleDenominator>1091957.5469310893263355</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>512</MatrixWidth><MatrixHeight>256</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>9</ows:Identifier><ScaleDenominator>545978.7734655446631677</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>1024</MatrixWidth><MatrixHeight>512</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>10</ows:Identifier><ScaleDenominator>272989.3867327723315839</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>2048</MatrixWidth><MatrixHeight>1024</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>11</ows:Identifier><ScaleDenominator>136494.6933663861657919</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>4096</MatrixWidth><MatrixHeight>2048</MatrixHeight></TileMatrix><TileMatrix><ows:Identifier>12</ows:Identifier><ScaleDenominator>68247.3466831930828960</ScaleDenominator><TopLeftCorner>-180.0000000000000000 90.0000000000000000</TopLeftCorner><TileWidth>256</TileWidth><TileHeight>256</TileHeight><MatrixWidth>8192</MatrixWidth><MatrixHeight>4096</MatrixHeight></TileMatrix></TileMatrixSet></Contents></Capabilities>'  # noqa
stream_features = b'{"type":"FeatureCollection","features":[{"type":"Feature","id":"bdortho_graphe_bdd_wld_wm_v81-graphe_bdortho.82","geometry":{"type":"MultiPolygon","coordinates":[[[[-44024.32,5498499.94],[-44016.45,5498512.69],[-36348.59,5530181.2],[-36350.42,5530178.9],[-36350.58,5530175.87],[-36351.89,5530174.06],[-36352.33,5530170.37],[-36377.31,5529892.13],[-36383.63,5529884.9],[-36386.78,5529884.12],[-43885.44,5501955.75]]]]},"geometry_name":"the_geom","properties":{"dep":"33","pva":2021,"res":20,"echelle":50,"date_vol":"2021-06-07Z","ordre_debu":602,"ordre_fin":9999}}],"totalFeatures":"unknown","numberReturned":1,"timeStamp":"2022-07-19T09:30:06.827Z","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG::3857"}}}'  # noqa


def get_attribute_mock(self, name: str, namespace_uri: str = None):
    return 'text/xml'


def get_attribute_mock_feature(self, name: str, namespace_uri: str = None):
    return 'application/json'


def get_impl_mock(self, impl: type, **kwargs):
    return io.BytesIO(stream_wmts)


def get_impl_mock_feature(self, impl: type, **kwargs):
    return io.BytesIO(stream_features)


def get_json_node(self, node):
    if isinstance(node, JsonNode):
        return node
    return JsonBaseNode(node, node.get_impl(io.BufferedIOBase))


class TestWMTS(unittest.TestCase):

    def test_namespace(self):
        service_w_sample = WmtsServiceNode('https+wmts://w_sample_x')

        self.assertEqual(service_w_sample.namespace_uri, 'WMTS')

    def test_type_service(self):
        service_w_sample = WmtsServiceNode('https+wmts://w_sample_x')

        self.assertEqual(service_w_sample.type_service, 'WMTS')

    def test_name(self):
        service_w_sample = WmtsServiceNode('https+wmts://w_sample_x')

        self.assertEqual(service_w_sample.name, 'https://w_sample_x')

    def test_impl(self):
        with mock.patch.object(
                WXSNodeOperation,
                '_get_content_type',
                new=get_attribute_mock), \
                mock.patch.object(DrbHttpNode,
                                  'get_impl',
                                  new=get_impl_mock):

            service_w_sample = WmtsServiceNode('https+wmts://w_sample_x')

            self.assertTrue(service_w_sample.has_child('GetTile'))

            self.assertIsInstance(service_w_sample['GetTile'],
                                  WXSNodeOperation)

            self.assertTrue(service_w_sample.has_child('Contents'))

            self.assertIsInstance(service_w_sample['Contents'], XmlNode)
            self.assertTrue(service_w_sample['Contents'].has_child('Layer'))

            service_w_sample.close()

    def test_operation(self):
        with mock.patch.object(WXSNodeOperation, '_get_content_type',
                               new=get_attribute_mock), mock.patch.object(
                DrbHttpNode, 'get_impl', new=get_impl_mock):
            service_w_sample = WmtsServiceNode('https+wmts://w_sample_x')

            operation = service_w_sample['GetFeatureInfo']

            self.assertFalse(operation.has_impl(io.BytesIO))
            self.assertIsNone(operation.value)

            with self.assertRaises(DrbNotImplementationException):
                self.assertIsNone(operation.get_impl(io.BytesIO))

            with mock.patch.object(
                    WXSNodeOperation,
                    '_get_content_type',
                    new=get_attribute_mock_feature), \
                    mock.patch.object(DrbHttpNode, 'get_impl',
                                      new=get_impl_mock_feature),  \
                    mock.patch.object(_DrbFactoryResolver, 'create',
                                      new=get_json_node):
                dict_request = {'param1': 'charlie'}

                feature = operation[dict_request]

                self.assertIsInstance(feature, JsonBaseNode)
                self.assertIsInstance(feature[0]['type'], JsonNode)

                self.assertEqual(feature[0]['type'].value, 'FeatureCollection')

    def test_url_service(self):
        with mock.patch.object(WXSNodeOperation,
                               '_get_content_type',
                               new=get_attribute_mock), \
                mock.patch.object(DrbHttpNode,
                                  'get_impl',
                                  new=get_impl_mock):
            service_w_sample = WmtsServiceNode('https+wmts://w_sample_x',
                                               service_number='v1')

            self.assertEqual(service_w_sample.url_service('GetTile'),
                             'https://w_sample_x?'
                             'request=GetTile&service=WMTS&'
                             'service_number=v1')

    def test_get_tile(self):
        with mock.patch.object(
                WXSNodeOperation,
                '_get_content_type',
                new=get_attribute_mock), \
                mock.patch.object(DrbHttpNode, 'get_impl', new=get_impl_mock):
            service_w_sample = WmtsServiceNode('https+wmts://w_sample_x')

            operation = service_w_sample['GetTile']

            self.assertFalse(operation.has_impl(io.BytesIO))
            self.assertIsNone(operation.value)

            with self.assertRaises(DrbNotImplementationException):
                self.assertIsNone(operation.get_impl(io.BytesIO))

            with mock.patch.object(
                    WXSNodeOperation,
                    '_get_content_type',
                    new=get_attribute_mock_feature), \
                    mock.patch.object(DrbHttpNode, 'get_impl',
                                      new=get_impl_mock_feature), \
                    mock.patch.object(_DrbFactoryResolver, 'create',
                                      new=get_json_node):

                predicate = WmtsGetTilePredicate(
                    layer='ORTHOIMAGERY.ORTHOPHOTOS',
                    tile_matrix_set='PM',
                    tile_matrix=14, tile_col=8180, tile_row=5905,
                    style='normal')

                feature = operation[predicate]

                self.assertIsInstance(feature, JsonBaseNode)
                self.assertIsInstance(feature[0]['type'], JsonNode)

                self.assertEqual(feature[0]['type'].value,
                                 'FeatureCollection')

    def test_get_feature_info(self):
        with mock.patch.object(WXSNodeOperation, '_get_content_type',
                               new=get_attribute_mock), \
                mock.patch.object(DrbHttpNode, 'get_impl', new=get_impl_mock):
            service_w_sample = WmtsServiceNode('https+wmts://w_sample_x')

            operation = service_w_sample['GetFeatureInfo']

            self.assertFalse(operation.has_impl(io.BytesIO))
            self.assertIsNone(operation.value)

            with self.assertRaises(DrbNotImplementationException):
                self.assertIsNone(operation.get_impl(io.BytesIO))

            with mock.patch.object(
                    WXSNodeOperation,
                    '_get_content_type',
                    new=get_attribute_mock_feature), \
                    mock.patch.object(DrbHttpNode, 'get_impl',
                                      new=get_impl_mock_feature), \
                    mock.patch.object(_DrbFactoryResolver, 'create',
                                      new=get_json_node):
                predicate = WmtsGetFeatureInfoPredicate(
                    layer='ORTHOIMAGERY.ORTHOPHOTOS',
                    tile_matrix_set='PM',
                    tile_matrix=14, tile_col=8180, tile_row=5905,
                    info_format='application/json',
                    style='normal',
                    i=5,
                    j=21)

                feature = operation[predicate]

                self.assertIsInstance(feature, JsonBaseNode)
                self.assertIsInstance(feature[0]['type'], JsonNode)
                self.assertEqual(feature[0]['type'].value, 'FeatureCollection')
