1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
/********************************************************************** * * GEOS - Geometry Engine Open Source * http://geos.osgeo.org * * Copyright (C) 2005-2006 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published * by the Free Software Foundation. * See the COPYING file for more information. * ********************************************************************** * * Last port: geomgraph/Label.java r428 (JTS-1.12+) * **********************************************************************/ #pragma once #include #include #include #include // for operator<< #include namespace geos { namespace geomgraph { // geos.geomgraph /** \brief * A Label indicates the topological relationship of a component * of a topology graph to a given Geometry. * * This class supports labels for relationships to two Geometrys, * which is sufficient for algorithms for binary operations. * * Topology graphs support the concept of labeling nodes and edges in the graph. * The label of a node or edge specifies its topological relationship to one or * more geometries. (In fact, since JTS operations have only two arguments labels * are required for only two geometries). A label for a node or edge has one or * two elements, depending on whether the node or edge occurs in one or both of the * input Geometrys. Elements contain attributes which categorize the * topological location of the node or edge relative to the parent * Geometry; that is, whether the node or edge is in the interior, * boundary or exterior of the Geometry. Attributes have a value * from the set {Interior, Boundary, Exterior}. In a node each * element has a single attribute <On>. For an edge each element has a * triplet of attributes <Left, On, Right>. * * It is up to the client code to associate the 0 and 1 TopologyLocations * with specific geometries. * */ class GEOS_DLL Label final { public: friend std::ostream& operator<< (std::ostream&, const Label&); /** \brief * Converts a Label to a Line label * (that is, one with no side Locations) * */ static Label toLineLabel(const Label& label) { Label lineLabel(geom::Location::NONE); for(uint32_t i = 0; i < 2; i++) { lineLabel.setLocation(i, label.getLocation(i)); } return lineLabel; }; /** \brief * Construct a Label with a single location for both Geometries. */ Label(geom::Location onLoc) : elt{TopologyLocation(onLoc) , TopologyLocation(onLoc)} {}; /** \brief * Construct a Label with the location specified * for the given Geometry. * * Other geometry location will be set to * Location::NONE. */ Label(uint32_t geomIndex, geom::Location onLoc) : elt{TopologyLocation(geom::Location::NONE) , TopologyLocation(geom::Location::NONE)} { assert(geomIndex < 2); elt[geomIndex].setLocation(onLoc); }; /** \brief * Construct a Label with On, Left and Right locations for both Geometries. * * Initialize the locations for both Geometries to the given values. */ Label(geom::Location onLoc, geom::Location leftLoc, geom::Location rightLoc) : elt {TopologyLocation(onLoc, leftLoc, rightLoc) , TopologyLocation(onLoc, leftLoc, rightLoc)} {}; /// Copy ctor Label(const Label& l) : elt{TopologyLocation(l.elt[0]) , TopologyLocation(l.elt[1])} {}; /** \brief * Initialize both locations to Location::NONE * * isNull() should return true after this kind of construction */ Label() : elt{TopologyLocation(geom::Location::NONE) , TopologyLocation(geom::Location::NONE)} {}; /** \brief * Construct a Label with On, Left and Right locations for the * given Geometries. * Initialize the locations for the other Geometry to * Location::NONE */ Label(uint32_t geomIndex, geom::Location onLoc, geom::Location leftLoc, geom::Location rightLoc) { elt[0] = TopologyLocation(geom::Location::NONE, geom::Location::NONE, geom::Location::NONE); elt[1] = TopologyLocation(geom::Location::NONE, geom::Location::NONE, geom::Location::NONE); elt[geomIndex].setLocations(onLoc, leftLoc, rightLoc); }; Label& operator=(const Label& l) { elt[0] = TopologyLocation(l.elt[0]); elt[1] = TopologyLocation(l.elt[1]); return *this; }; void flip() { elt[0].flip(); elt[1].flip(); }; /** \brief * Merge this label with another one. * * Merging updates any null attributes of this label with the attributes * from lbl */ void merge(const Label& lbl) { for(int i = 0; i < 2; i++) { elt[i].merge(lbl.elt[i]); } }; int getGeometryCount() const { int count = 0; if(!elt[0].isNull()) { count++; } if(!elt[1].isNull()) { count++; } return count; }; geom::Location getLocation(uint32_t geomIndex, uint32_t posIndex) const { assert(geomIndex < 2); return elt[geomIndex].get(posIndex); }; geom::Location getLocation(uint32_t geomIndex) const { assert(geomIndex < 2); return elt[geomIndex].get(Position::ON); }; void setLocation(uint32_t geomIndex, uint32_t posIndex, geom::Location location) { assert(geomIndex < 2); elt[geomIndex].setLocation(posIndex, location); }; void setLocation(uint32_t geomIndex, geom::Location location) { assert(geomIndex < 2); elt[geomIndex].setLocation(Position::ON, location); }; void setAllLocations(uint32_t geomIndex, geom::Location location) { assert(geomIndex < 2); elt[geomIndex].setAllLocations(location); }; void setAllLocationsIfNull(uint32_t geomIndex, geom::Location location) { assert(geomIndex < 2); elt[geomIndex].setAllLocationsIfNull(location); }; void setAllLocationsIfNull(geom::Location location) { setAllLocationsIfNull(0, location); setAllLocationsIfNull(1, location); }; bool isNull(uint32_t geomIndex) const { assert(geomIndex < 2); return elt[geomIndex].isNull(); }; bool isNull() const { return elt[0].isNull() && elt[1].isNull(); }; bool isAnyNull(uint32_t geomIndex) const { assert(geomIndex < 2); return elt[geomIndex].isAnyNull(); }; bool isArea() const { return elt[0].isArea() || elt[1].isArea(); }; bool isArea(uint32_t geomIndex) const { assert(geomIndex < 2); return elt[geomIndex].isArea(); }; bool isLine(uint32_t geomIndex) const { assert(geomIndex < 2); return elt[geomIndex].isLine(); }; bool isEqualOnSide(const Label& lbl, uint32_t side) const { return elt[0].isEqualOnSide(lbl.elt[0], side) && elt[1].isEqualOnSide(lbl.elt[1], side); }; bool allPositionsEqual(uint32_t geomIndex, geom::Location loc) const { assert(geomIndex < 2); return elt[geomIndex].allPositionsEqual(loc); }; /** \brief * Converts one GeometryLocation to a Line location */ void toLine(uint32_t geomIndex) { assert(geomIndex < 2); if(elt[geomIndex].isArea()) { elt[geomIndex] = TopologyLocation(elt[geomIndex].getLocations()[0]); } }; std::string toString() const; private: TopologyLocation elt[2]; }; std::ostream& operator<< (std::ostream&, const Label&); } // namespace geos.geomgraph } // namespace geos