Opened 8 months ago

Closed 8 months ago

Last modified 8 months ago

#5711 closed defect (fixed)

Failed adding single touches interior of edge 128 LOCATION: pg_error, lwgeom_pg.c:361

Reported by: Lars Aksel Opsahl Owned by: strk
Priority: medium Milestone: PostGIS 3.4.3
Component: topology Version: 3.4.x
Keywords: robustness Cc: Lars Aksel Opsahl

Description

When adding attached file on this system

POSTGIS="3.5.0dev 3.4.0rc1-1085-gef1511cd2" [EXTENSION] PGSQL="140" GEOS="3.12.1-CAPI-1.18.1" PROJ="9.3.0 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/tmp/proj DATABASE_PATH=/usr/local/share/proj/proj.db" LIBXML="2.9.13" LIBPROTOBUF="1.3.3" WAGYU="0.5.0 (Internal)" TOPOLOGY

PostgreSQL 14.11 (Ubuntu 14.11-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit

We build a valid topology

NOTICE:  00000: Checking for coincident nodes
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking for edges crossing nodes
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking for invalid or not-simple edges
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking for crossing edges
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking for edges start_node mismatch
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking for edges end_node mismatch
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking for faces without edges
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking edge linking
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Building edge rings
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Found 5 rings, 0 valid shells, 5 valid holes
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Constructing geometry of all faces
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking faces
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checked 0 faces
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking for holes coverage
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Finished checking for coverage of 5 holes
LOCATION:  exec_stmt_raise, pl_exec.c:3869
NOTICE:  00000: Checking for node containing_face correctness
LOCATION:  exec_stmt_raise, pl_exec.c:3869
 error | id1 | id2 
-------+-----+-----
(0 rows)

But when adding this line we

select topology.TopoGeo_addLinestring('topo_nyxxx','0102000020A210000009080000EAA53BAA7EA52440FA3EFC88C0EC4D4062747AF08EA52440E780A266C7EC4D403DFDF79898A5244031031C9DCAEC4D40013998ADA6A5244047F4D790CEEC4D40563C6570B6A5244018AB769BD1EC4D4009F12BC0C8A524403997B3A6D4EC4D404522E0F4D8A52440E5FD7448D8EC4D40AFFF21BBEEA524401EBD655BDCEC4D404F6267CAFAA52440849D2DC7DEEC4D403004724507A624407A9C5BC9E1EC4D40D3DD227B10A624401177EAD2E4EC4D40E4304AF414A624403298F11EE9EC4D40A5F253FF1BA6244097F7768AEDEC4D40BA93CF7824A62440A8734240F1EC4D4089B579FD30A624404923B406F8EC4D40AED81B7D39A62440BEA43B4CFBEC4D40A14F44C941A6244088ACF42FFEEC4D40BDC0E02C4FA62440510170C101ED4D4085C35A5F5FA624403ABB097905ED4D40EDB659EB71A6244001D872CF08ED4D40580D35FB84A624404653F0F80AED4D40DADEB8F7C1A62440DDBB071411ED4D40DFCDF8A8D7A624408E59CE1F12ED4D4028F68F4CF2A62440C41B39CA12ED4D4025396C0F04A7244060A7D7CD12ED4D40B0F8EF8513A72440194A255812ED4D40F0FE4D7345A72440964365F80FED4D40DF1DB2827BA72440018903290FED4D4062B55A8989A72440FE73553A0FED4D40F5A2E705A2A72440DB3C9E5510ED4D404F950565B5A72440E639807F11ED4D40E07892A0C9A72440AC66F7A813ED4D40D8DA8FDAD6A72440747B310D16ED4D40C391E0B3DEA724409AAF3BE117ED4D4082D48B60E5A724400929BF1E1AED4D40773E4515E8A72440DF08E06A1CED4D40939E3C63EDA72440B1B786D522ED4D4084650869F2A724403F2156B825ED4D405EBCF783F9A72440801C4F9B28ED4D40BDEF63D2FAA724407E4108A32AED4D4077FB304CFCA72440D7ED9B2B2EED4D406DD6470DFAA7244077CED0D030ED4D404D895989FBA724405E68084234ED4D40467B7D79F7A72440AF49A23936ED4D4089CB41E0F3A72440482227B937ED4D40096A6317F4A724405DDB8C3138ED4D4052FBBE18DFA72440FC1DD8F83BED4D4025767FCAC8A724408DA8E2213EED4D4045AF91F1B2A72440ABF3E41540ED4D403D18A030A3A72440B6D64EA941ED4D40379716A697A7244067D3C5AE43ED4D403D0543DB92A72440B82C8F0F46ED4D401EE40BE393A72440BA1755DB48ED4D40C67DBD86A1A7244094CFFC124CED4D4055219649B8A72440F8AD568F4FED4D40C4E553C6D2A724408063951453ED4D40EF2DAC34EAA72440CBDBDA1857ED4D404E7F683801A8244050AE96685AED4D40E239753342A82440BD4D83D75FED4D4052A7068064A824400950EF9261ED4D40E143EF5C83A82440BD816ADC61ED4D40FF9EBB8DA8A8244063BE799F61ED4D40297CE1ECD2A82440EB3019DC60ED4D404AE31C9AF5A82440FD87303D5FED4D40BA7C98B606A924409D3FA38B5EED4D4051D48DC217A924400010565A5FED4D40F87E72D823A92440155EB99860ED4D4069485ED42AA9244074C3F9B061ED4D404E382B1431A9244080A48CDF62ED4D40F7D7ABEE34A9244054855A5165ED4D40313998C131A9244012769D9468ED4D40C03EAA6E2DA924408962C5A96AED4D408E7D969B25A92440534BFFCD6CED4D406969291919A92440897D49356FED4D402859A1A004A92440D664142A72ED4D4080638394E9A824409C1AC34275ED4D40AA3E4353CAA82440B939598878ED4D40F021ECBEAFA8244033F5CE7B7BED4D40D7D1446F99A82440D50301C37DED4D402145779A7FA824402B440EAF7FED4D4074D708456AA8244094B17EC180ED4D40B48D18F954A8244091C32B2E81ED4D403C1FDE6B38A82440BAF12A4E81ED4D404D5B63CF19A82440DA6150D780ED4D4039BE778A01A82440174AA2F07FED4D406B005476C6A724408EF6B6127EED4D406E6E4389ACA72440365FCA587DED4D4065DA0C0C94A72440205081CC7BED4D400E081E807DA72440167E8CC878ED4D407EDDB2816DA7244026444EEB75ED4D402A5FAB995FA724409C7DC11573ED4D40961F467D52A7244069251AA26EED4D40D24CF89F41A72440048574446AED4D40074D690D2FA724404FF2683967ED4D40B94433E618A724400EB194A565ED4D40BBB1A9EA03A72440D0272CA964ED4D406A98AA64F5A6244059DF8BB564ED4D40E8511225D8A624405CF7BC4D65ED4D40E2D963F8BFA62440D52BFC0C67ED4D40AE46E821A5A6244084A12C976FED4D40ACF9B3C795A624407FC185AA72ED4D4094D9DF4C88A62440EA77ECBE75ED4D401B5BB9D87CA62440B6410DD37AED4D4056D4556078A62440769DC6F77FED4D40C7A212F982A6244080E4649F83ED4D40586175C7A0A624402A82013C86ED4D40CABEF1CBC7A624405B86CD2C87ED4D40D827D16AE6A62440AFD3C04187ED4D4091C0DF5017A724405C88BCE986ED4D40BD2F77D73AA724407CC6376187ED4D40D90533E455A72440C4AA306E89ED4D40E9977CB75FA724401696371D8EED4D40AC980AE661A72440745ADFAC91ED4D409530C56D68A72440AB1FE1AD96ED4D40FE94A71B74A72440FAB26BFB9BED4D4036D9DA4A8BA724409B1D9834A0ED4D40A0F215A6A4A7244071036B5FA3ED4D40AE563BD2BFA72440B876C25CA7ED4D40B140714ECFA72440436C8849ABED4D4063EC3DFCD4A7244059E302E9AEED4D40CE961BE1CFA72440E32286D8B2ED4D4094647772C8A72440BAD04B93B6ED4D4039822B8AB8A7244030CBD7BDC0ED4D4038E09D08AFA72440D7B82CCBC3ED4D400E9D1FEC9BA7244012C6045EC7ED4D40F64A74E782A724408AE016C3CBED4D40D20B469164A724402E291C88CFED4D4079A657F84EA724400512804FD1ED4D40D6BC714637A72440BC970BB4D2ED4D40D324F3C724A7244071D708CFD2ED4D4092EC51861AA7244078F1BB08D2ED4D4041B2ED3208A72440F59336EFCEED4D40D893C360F6A62440EC1C3509CBED4D40FE860D90E7A62440189DAEEFC7ED4D40492887AFCFA62440D7550155C3ED4D402A877125B3A6244054E9F065BEED4D403E1EC4889AA6244003497F77BAED4D40C44C615A7FA62440273BBC01B7ED4D40C60A93405FA62440D5CF6A5DB3ED4D40C607E5A537A62440D8408C11B0ED4D4015D4FD1C12A62440A6AEAB46ADED4D404FA346ACE7A5244090DF7D89AAED4D400E6365D5BBA52440A080FCD3A7ED4D402FF0C74788A5244075F662E0A4ED4D40E74E8C3D5FA524404300438DA2ED4D409EE54A1638A524402FFBAF949FED4D40D5F9FE5B11A52440AE550AAB9DED4D409216DD48F2A424404D6AECCA9CED4D40A111E63FD5A42440197C746A9DED4D401913D4A8BBA4244001F469B19FED4D40539BDA0AB1A424404698D95BA1ED4D40C67E1965B2A424402A784B82A2ED4D401527E0AEB4A42440DA7C23A8A3ED4D40F32C8D17BFA42440731938D7A5ED4D40733BE9D4D6A4244007A0F86AA8ED4D407549CC89F9A42440695A5188ABED4D40FCCD9EB912A5244086646F0DADED4D4017D9ED1C2FA5244032223ADEAFED4D4042B0671946A52440DAFDD671B3ED4D40E0C62D2E58A524404DC491C8B6ED4D40A7E0795770A52440F3F85F18BAED4D401669A85787A524401BE7E79CBDED4D40D9A6F7ECA5A5244074C999C8C3ED4D408E18807EB0A524409EF20BB4C7ED4D4056EC5999AFA52440932E9BA4CBED4D40AFB5AE91A6A5244087D96EC1CEED4D40D5F9852E9FA52440AF9F279AD1ED4D405250DD4690A52440522BD200D5ED4D40D5F2E97180A524409A616576D8ED4D407B174DF575A5244095B9B346DCED4D4027A105C572A5244029523955DFED4D40032D7AE675A52440487D4AB0E2ED4D4078A47DE87AA524400D5D857CE5ED4D406A34B18888A52440E95447C3E8ED4D406450587C9DA52440865A034FEBED4D40331F900BB5A52440EE436397ECED4D40B66779DFC2A52440901741B0EBED4D40B70A3068CBA524407B768DB9E9ED4D401873E57ADFA5244007158A6AE5ED4D40DE604975EDA524402E9D71C7E1ED4D400CF62E19F8A5244044CC383ADFED4D408213F9610AA62440A7B27889DEED4D40719AECAA22A624402FE5733BDFED4D409BB2E61935A624404782ED5CE0ED4D407A37C30A51A624401BB77126E3ED4D40E087CA1067A62440B77E9D22E7ED4D40952CA68479A6244053473B5BECED4D40CC0DE60C8CA62440F39C8575F0ED4D4043136A3D98A6244008769F8EF4ED4D40578A47D99BA6244091787187F7ED4D4029A6A3FB9AA62440ABDA440FFBED4D404BEBDEFF89A624408A2B39C0FDED4D402F4F78A473A624404DB245CB00EE4D404E454E4D64A624401A9E8ACF03EE4D40927DB7A255A62440EF42EE1707EE4D401896983144A6244012F9FED809EE4D40A6D481D332A62440D9EC1D280BEE4D40DAF5505D1EA624408E7F1B770DEE4D40AEDEAFCD06A62440DFECAEBD10EE4D401D2DD58CD4A524401658DB1D15EE4D400F1C8862BCA52440BA9895A716EE4D401E9F6DEEA1A52440ECA5380C17EE4D404BDA30A285A52440970DBBBB16EE4D402611BA8B6EA52440F3F0947A15EE4D402F3F68B04DA52440BF2EC5FB12EE4D40FE41A92A36A52440326E9F9C10EE4D40D99F9D2326A52440B61E4E920EEE4D40A4E5CE4B17A524406111E8960BEE4D4053ABD4B70CA52440E0A0BAE707EE4D4010C12A5F06A52440F345A49A03EE4D40DA21E93205A524402A4DD5B8FEED4D408436BECD07A52440BFCDAC75F9ED4D4076DC746D0DA5244006178158F4ED4D402F35B9C217A52440EA004587EEED4D40170C4F5E24A5244097970A37EAED4D400247440229A52440D0F9C0FBE5ED4D40A55A350E25A524408BCE00B0E0ED4D40DB13B56B17A52440D3CCD87FDDED4D40C181118E0BA5244047DA0005DCED4D4096E2A38FEEA42440167C64E1DBED4D40FA55385BC9A424405781B8E8DBED4D40586EBF0BAAA4244012EF692EDBED4D40533CA25F91A424408E255FEDD8ED4D40E61E470283A42440849AB900D6ED4D40470D426F7FA4244051D14580D2ED4D40CED67B4B7BA42440126A8C77CCED4D40ACA690C469A4244068B8E04EC7ED4D4094959B5155A42440018CF23BC4ED4D40B8E6BD413EA42440A52C1664C2ED4D400FB94A1C26A4244072BF2C94BEED4D40EF84BEEA07A424400C74211DBAED4D40352070A6E2A32440C78C11F0B6ED4D40D27340A1BEA324408432E62CB2ED4D400B64CB38A3A32440FFEF5127AEED4D4017804A2092A324405A716EEFA9ED4D40C52679F287A3244076B7FD92A7ED4D40D405475D7CA32440F8910711A5ED4D402CCC9B466FA32440E841724AA0ED4D40CFB5952D6AA32440EA06EA8C9AED4D408640107666A324405FA2561B95ED4D406C64437263A3244062A466F58FED4D40A310B8FA5EA3244059D0788A8BED4D409A35700856A3244082CE56F287ED4D4097EAC1864AA324407D37DA2484ED4D40D4157B323FA3244000B0850481ED4D40622F192C2FA3244057B06BF97EED4D40A7F636AE16A3244066CB40667DED4D4097551FD506A324404900FA9E7CED4D40B036B9AEF7A22440FD37CD397BED4D408B223341DBA224406A01D92C79ED4D40AA86CEF4C6A22440C948891278ED4D40B8B3E9BFB4A22440CCDDCA5277ED4D401EA5A8379DA2244054FC549975ED4D404E5B414D8BA224400A1DCBE073ED4D400CE2622E74A22440ABFB16D572ED4D40E505312D69A22440D06BCF3B73ED4D403DB31B9762A224407BCC5B3374ED4D405A5CC62363A22440D9699FEF76ED4D40DAC9703E66A22440E6B7B7BB7AED4D4009B03ADE6FA224404458D8797EED4D40269B14767AA224402333812182ED4D403BB99EBE8CA2244081AEF42C86ED4D405ABCC9DB9AA22440D4646F0289ED4D409946334BA8A22440D95598D78BED4D40737E0A4DB7A22440A3DE75BC8FED4D40F3C0D64AC7A22440973932C092ED4D40CA1E8F2ED2A22440CA83960595ED4D40E108C4DBDEA2244096FD2B1F99ED4D40F72AD55EE7A22440134850999BED4D40F8E535DBF0A224403BB82EB99DED4D40699612E7F9A22440C5F787959FED4D409BD11A3003A3244081DE4108A1ED4D40DD30F10605A32440FB69856AA1ED4D40399DCAF50CA32440BC952202A2ED4D40B8E2CC351AA32440BF43D2AAA3ED4D401886AA9D25A3244066B2F5E8A4ED4D40CC9E075939A324408B92C5E5A7ED4D40ABA617B554A3244065F0A4CCACED4D40AE5A62C366A32440FAE46C94B0ED4D40093EEF4F78A324402260C371B5ED4D40D15A0E4299A324403ABA6578BFED4D40E9691CF0A1A324405718A3E3C3ED4D405849386AA6A32440F45B4A12C8ED4D409887BA31A7A324402F2DE037CBED4D40369E1082A8A324404252AA4ECDED4D400BB281E9AFA32440147F5AFDCEED4D4099DCA240B8A32440A4DD8686D0ED4D4070C2D9C0C4A3244047142F10D3ED4D4084959829CFA324403A9D5C8BD5ED4D40BF1206C5DDA324401243D73AD8ED4D4018D6F9B8F1A32440C34E91B7DBED4D406175EAC903A42440177D4F42DFED4D40835AFC500FA42440B24AFE97E2ED4D404A9A647616A42440829A1828E5ED4D40F63DDE981CA42440CFEA9092E8ED4D400121A4E81FA42440B4E2A8EDECED4D40FE828AF61FA424403564B684F0ED4D4062C808AC1FA424407C65C07CF1ED4D405C6A62202EA42440703278C3F2ED4D40F709FDF765A4244006E09C8AF8ED4D4070D1D13D7AA4244091D2617FFAED4D40128491AA92A42440159A5266FDED4D40F4560D95A3A4244067002C9E00EE4D40B71B59FDACA42440AAF5047304EE4D40EA79AACDB0A424409CC0EFD507EE4D40958A63A5B9A42440C9A9AD4812EE4D40BA1AED4BBEA42440A48989D817EE4D402976CE38C3A424401CCB5F0E21EE4D40E05B5D7BC3A42440FF77585925EE4D408B1F148DC6A42440EBA286A529EE4D40C04C44E3CFA4244089CF01182FEE4D40C57CF996DEA42440E4E52EDF34EE4D40EB2938EEF1A4244013B797D33AEE4D4028628F5102A52440E0A0D96D3FEE4D407820D98315A52440F3C7245344EE4D4009E9372E2CA524403A80C1B149EE4D40C6E8D5A439A52440A92348CB4BEE4D400854C6954AA524404E291A924EEE4D4014C923B757A524404F34E6B252EE4D407E87656A55A524407A3CF1EE56EE4D4083935E6B4BA52440FE7203295AEE4D407212DE4A3CA52440E9B56AA65DEE4D4083792A9331A52440AE8011A461EE4D401EB1188D2AA524406976957D66EE4D4019B02BDA1FA52440B6A15A286AEE4D408AA9F4F018A524402ED495106DEE4D4007D27A820EA5244079C0A99D6FEE4D402E866E4502A524406311866671EE4D409BFE7C94EEA4244026CB671772EE4D402D50DB6FCCA42440215C1CFA71EE4D401A44D683B2A42440CA16822971EE4D40AB243FBAA1A42440F90930CC6FEE4D40556054C289A4244060FE4EFC6CEE4D40265404037AA42440A9E375C469EE4D40E6AC825E6DA42440156AE47665EE4D40C0F2042A62A424409280E10A60EE4D40B4BC09115CA42440BB4EFB635BEE4D40FE77C8B059A42440C098B52E57EE4D401939B30658A4244075D5772E53EE4D40AB2DBCDD58A42440F18337EB4FEE4D4022F906F456A42440A8C31D1F4CEE4D40512B48AE4FA42440E4E104BC47EE4D40FDC83AFF4AA42440FF635DFE42EE4D40DC1C821A49A42440A40978BA3EEE4D4064AE1D1342A42440C46CF21A3AEE4D40CC1D540D34A424407F04C0EA34EE4D40FC236D4A29A424405C1E11342BEE4D404404F94D1EA424404B722C6621EE4D40D0B0DBF61AA424405FF691E51DEE4D40CD73029516A424402BFA04A917EE4D40FF5CB32F0CA4244052FB6ED314EE4D409B5ADF03FAA32440E242B46E13EE4D409A7172DEE6A32440305ABED312EE4D40E54BCE8CCEA32440C1BC00CF12EE4D401D0366F6BFA3244033621D6314EE4D4056EA8578ABA32440B660E16617EE4D40BB2CD0C295A324403B7DEC4B1BEE4D409B8CBEF984A324403273F91A1FEE4D40A7BA312679A3244096DCE86B21EE4D40ACFFB4486AA32440859E503424EE4D409CDC40855DA32440C76B58F526EE4D403AA26ACA53A32440A8710BCE29EE4D40EE7D5F9A4EA32440FCF0EBBD2AEE4D4058690F4444A32440AB46E9862BEE4D400F7C4ABD35A324406C9A3C042CEE4D407A48B11331A32440F8A3ECFB2BEE4D40A92BBC6729A32440C1B9ACFA2AEE4D4058BA2D2C1CA324405B0D71D928EE4D405757070C11A32440DB4E739326EE4D4036418D9B0DA324400DF1624025EE4D4052829FBCFEA224403380C86A23EE4D40DCA6FE19F2A2244044621C6F23EE4D4031F3A944E1A224406C06771923EE4D4028107DFBC8A22440B3C9BD4122EE4D40C611C560B5A224406A13731F21EE4D40DBE96EAC92A2244011F98F7A1EEE4D4068487E347EA224408A1925E01BEE4D403D92304D69A22440F6E6A5BD18EE4D40CD79205E3EA22440C9ADD50012EE4D4090A12AD92BA22440877087F50DEE4D40918DB2E025A22440BBAE9D920BEE4D404C71C19928A22440FA80FB5D08EE4D408BBB255A2EA224403788D38405EE4D405ACD2F3A3AA2244071B2490702EE4D4018301EA94FA22440DF3591E5FEED4D403646246A5CA22440CAB57D86FCED4D4028F4CDB964A22440EE9E9A07FAED4D402431760666A2244003D9A94BF7ED4D409DB1BF2B62A22440B47B0ED3F4ED4D408030DDCF56A22440FB55C966F2ED4D40ACEF07E44FA22440CF7FCC83F0ED4D408FD0D11C4CA2244083567930F1ED4D40449E86C641A2244039EFC944F2ED4D40054F5AE63BA22440DEEC9CFFF2ED4D4074CA23A22FA22440A4D297E6F4ED4D40C3BB347D21A2244099421282F7ED4D40DE01DB610EA22440ECE48967FAED4D40088B6943F1A12440561768E2FCED4D40C11DA286DAA1244064FB4CB0FDED4D409537AB4EC8A12440749A2678FDED4D4069A00FD8B6A124409FEF20CFFBED4D405548FA01ABA12440CB9717C5F9ED4D40D3295EC49AA12440F6829141F7ED4D404527DB0D8AA1244058062591F4ED4D407A83696F88A12440B1C88E3EF4ED4D408050237478A124400981F2B3F0ED4D40DB6462CF6EA124407F9D9AFCECED4D40BB4A4BE968A12440CDD2A2B7E9ED4D402FDA1FA660A124404803AC72E6ED4D401573561355A1244045ABFEFEE3ED4D40B1178A3E4CA12440E99B73C1E2ED4D40732890143CA124402F5C9F18E3ED4D40ECF6CF6B27A12440FCD73C9CE4ED4D400A8A40EC1EA124401DE07938E6ED4D40A1B1EBB720A124405CF7A4CFE7ED4D400510AF8B2BA12440F1E97F51EBED4D409249DC5533A12440A1DB3B8FEEED4D40C194F0FF38A12440EF06B01FF2ED4D40FEBDD7D13CA124403923426BF5ED4D403092961041A12440985DD9A0F9ED4D4037AA87B340A12440534EB25DFCED4D405D496FF945A124403FA22B31FEED4D4013D9264C55A12440C6B0FFAC00EE4D40E8D1BA7B66A12440F674521903EE4D4027C5B6597CA124408BCE81D205EE4D4051C8379493A124404ED6C62909EE4D404E94160AA4A124405CF98F070CEE4D408012EDCDAFA12440DB13FC3E0FEE4D405C8B1657B5A12440B24B931A11EE4D404282D3EBB6A124406C7441ED11EE4D4018A07AAABAA12440E3C18A1312EE4D40FCAB48E9B9A12440201EBEED12EE4D406FC42E8CBCA124409771789416EE4D4075789746BEA12440B4A9CDD019EE4D4080CE28FFBEA12440DA465DC91DEE4D4056000974BDA12440E64EBAC120EE4D40902117B8BBA12440EDD901AB22EE4D4088D995CFB4A124403355BF9A25EE4D404702995AB3A124406AC9A47426EE4D40C0E63129AEA12440B33D51A827EE4D4024E4D612A3A1244064C25A2D29EE4D402C4B679E8BA124401706C57B2AEE4D40332DD45C75A12440506EB3602BEE4D400DC302D65AA1244073D987172DEE4D407694E4A936A12440938E936A30EE4D40314681E91BA12440324C9C3032EE4D401F969A9A02A124408DCD7CE032EE4D40DF762230F6A02440C331248B33EE4D40BD8D6D9DF2A02440B25D7B7B34EE4D4004B347E6F0A024404924E11136EE4D40AB06DC4DF4A02440D0B43E8338EE4D403538CFB703A1244062B1B3CA3DEE4D40B27CC2CE03A12440ACBA929540EE4D400CF51762F9A024402AFB565743EE4D40CFBE890FE2A02440AC5977AD46EE4D40F9FC8F29ADA02440046978D74BEE4D40C5953A1678A024403BA3A32E50EE4D40F6FA599858A024402A442F1253EE4D40767EDF5B40A0244006C5091C56EE4D40523693082DA024400422694559EE4D40256C762226A02440665A873C5BEE4D408394199C21A02440B6D31FF85CEE4D40A543FE5823A02440EB9EEF875FEE4D40C6C5265629A0244076BBA5BD61EE4D40402419CC36A0244084157CD663EE4D40C40F0DA143A02440214F225264EE4D40304D8A4558A02440ED89154763EE4D40BD5D51C670A02440D27C090060EE4D400224B9EC82A02440FD3B751A5DEE4D40A1F66101A6A024408B43E87B58EE4D406A2017AACCA024408E51DF5D52EE4D40B0548677ECA02440911ABA094EEE4D40FA47F61202A12440604CFF494CEE4D40D26B7F951EA12440E8353A9B4CEE4D40703DDAD936A124400D7934114EEE4D404378087E45A124406A6B83EE4FEE4D40D3D204CF50A12440A2E9EFAC52EE4D40452D484356A124408A8C1A1756EE4D40CDDC8E2154A1244033CA19445BEE4D409784BA5755A1244027D7AE875FEE4D40558B565859A1244083745CAE63EE4D40F436B67263A124401B12037C67EE4D407329F7136DA124407D7158676BEE4D40CDA608DE7BA1244060ED4C3D6FEE4D40214AAA2787A12440BB15E1FB72EE4D409CA1F29C93A12440768ECB9476EE4D409A99C39BA2A124409817C0887AEE4D404879ED79B0A12440E1EE22047EEE4D40D034A3B6C3A12440A2FA96B481EE4D40A6038426DBA12440A42147C185EE4D409CCAA1BAEDA12440CB729C8888EE4D4024F82D9121A22440CBFDCE4E8FEE4D40B3C9FD8C38A2244034A09F0093EE4D400854DE4A48A2244096AC4E0B96EE4D4061E5D7AF56A224400248294398EE4D404149590466A224408E22C0C59AEE4D4081C7E87B83A2244039985BF19FEE4D409421E6938EA22440C0CDF94DA2EE4D405CA684B6A3A224405880CAD9A5EE4D40503ECD61B4A22440F86EE520A9EE4D406AF2BDBBC2A22440005FE48CACEE4D4045E207D1D1A224409A50C9F9AEEE4D40F73665F1D9A224406884D009B0EE4D40A151F58CF3A224400D6985B4B2EE4D400D69BEB8F7A22440FF89279FB3EE4D40FABA54FF0BA324404F60486EB5EE4D401BCE1C6824A3244074F4CC5CB8EE4D40553F2D8233A32440820A64C1BAEE4D40CAD79E8142A32440487152B5BEEE4D400DC172F74EA32440893E8D99C2EE4D40C970097255A32440909025E6C3EE4D40C8EF096863A32440559F534BC5EE4D40379E6F4973A324405EDE5B19C6EE4D4007EADBA981A32440A99CBEC9C8EE4D40EAAA3C3F9FA3244087C85D6DCBEE4D40A703177DBEA32440E1B08E4DCDEE4D40C163BB1407A4244049179E2ED1EE4D40F5FAE36C28A4244074498253D3EE4D40E067B3DF40A42440E34F3D9CD5EE4D40330DF75355A42440EA592BAFD8EE4D4011D2EA6E63A42440657AB304DCEE4D409E1607A772A424408236E052E0EE4D40003CB1A57AA42440905ABAAEE4EE4D404757C4777AA4244018EA986BE8EE4D4061C612D671A4244039B79B96ECEE4D405ED0D02462A42440261BF3B1F1EE4D40F399560E4AA424407EB18A43F6EE4D405C030A8B2AA42440A9BA6AC5F9EE4D401AF7C68004A42440F121A590FCEE4D405796FC64D8A3244091F5F352FFEE4D40C815FF51AFA32440C25BEBBB01EF4D40DB9B10877FA32440A555936703EF4D40B241328C5DA32440464D007F04EF4D408C795FE841A3244085F1181F05EF4D4087FD99C729A3244088839E7405EF4D40BF54B9D51DA32440F74E482706EF4D401B03C66914A32440E60BA31D07EF4D40077D07730FA3244066CB634A08EF4D40B47ADC6B12A32440FBA96BC309EF4D4032FCD20A21A324405137B8110CEF4D40813F10FE40A3244015F317450EEF4D40F8F0614260A3244065CA9CFF0FEF4D402D07DD507FA32440847BED6E11EF4D4010D1DF04A2A32440A12EB97514EF4D40819C3187BCA32440B3D6FDEB17EF4D40FDB54E5DD2A324400E02E34A1BEF4D40456CE533E7A32440374DFC991FEF4D40481C3D8BF8A32440A0E154B423EF4D4079060F7B04A42440436D13DC28EF4D40CE7E46EE08A42440DE8420992DEF4D40C5FC740309A42440543A5B7B30EF4D409C89636808A424405FDEDF7333EF4D408B52AC3D05A42440E2C6B4EB35EF4D40553E4898F7A32440160DF3B337EF4D40BFFE8876DEA324401D09EB6339EF4D40DD976576C3A32440DF87C7B13BEF4D40F54C36B3B3A32440A79922453DEF4D405D380F6698A324403128A3A140EF4D409261412C7EA3244087C635C245EF4D406BE4BDE16CA32440C2F283F349EF4D403E607C5A5AA32440AE13BCCA4FEF4D4013984EB447A32440E036BB6453EF4D402096060E32A3244069A69A1556EF4D40FA003FE31CA3244081E46D2058EF4D409DE105E009A32440DD0AB52359EF4D404551CC5BFBA22440432C9FB759EF4D409A512CA8EFA224403988857159EF4D408EF08BF5E7A224408D9B9F2C59EF4D40ACE5D85ADEA2244087129F4859EF4D40400FD55FD3A224403A0BF22059EF4D402401CB13C2A22440D345928E58EF4D4060AEF25FB3A22440793EEDA957EF4D40DADC9737A1A2244032C98AF155EF4D40B5250F9B8EA224407AECF49253EF4D407F40A33C7DA2244077A6292E50EF4D401C53F3476EA22440A939A7DF4AEF4D40F6A54CB267A224403D8181D646EF4D40CC829B0E63A22440B820083041EF4D40EE1F4B6862A2244079A8F16B36EF4D40A16DE90862A22440CE035EC62FEF4D4020C9DD3563A2244023D0C2A02AEF4D4099F8FBF660A2244054298B2024EF4D407B39059D62A2244082C096281FEF4D40CF8EFBA665A22440F58C903F1AEF4D40A9A4C02D62A2244035423BB714EF4D4050B7D6B956A22440C87A6DCB0FEF4D40FCC5E78C48A22440640E967D0DEF4D40FF098D5D36A22440CC1C047A0CEF4D40EE9E2D6D26A22440D58785C90CEF4D40306BCBF915A224401129794D0EEF4D40D1DD613FF4A124400BBCB73F14EF4D404567CDADECA12440C40141FA15EF4D40F4782102EAA12440822E0B9817EF4D40D7D201E8F1A12440DBE62DD618EF4D407A73175EFDA124400DA04BD01DEF4D4080EBB173FEA124409E756EA31FEF4D40EB432B78FCA124409EBFEF9B21EF4D40523330C7F6A1244023D8FA8323EF4D40C2305555ECA12440C30A4D4D26EF4D40306E6802E4A12440EA5C5F2D29EF4D40A2AFE043DBA124400E3CB52B2BEF4D408037EEC4D6A12440AD3E27E72BEF4D401BFB50E4D7A124404F62DCEE2CEF4D40B32CC1E0DAA12440D7E67B0D2EEF4D4052C026DBDFA12440F84838B431EF4D40622F9F58E5A12440F654D70034EF4D40AA37675CF5A12440B2386DB83BEF4D40C9B2329307A224407EA9123541EF4D40D2B1BC660FA224409DD481C543EF4D4078E9318013A224406B81710246EF4D4056D140601AA224406E15783849EF4D40D8B6C04520A22440417B919B4CEF4D408165E5D121A224404C74E0D74EEF4D40FB399D461DA224402D695CE650EF4D40D036FAEB15A224404610A1F352EF4D40FD795F2106A22440793633F154EF4D402AC7A29EF6A12440B5B5D57C56EF4D4096000A4EE4A12440F829F4C457EF4D40B1D4839AC9A12440EA4A5D9258EF4D402948E5F4ADA1244071A4E32A59EF4D4096B54BB497A12440351B378859EF4D406878FF7A81A12440C56B0D7C59EF4D40DAF8594A68A124406109CDB357EF4D40C74F53515BA1244065AAFF7455EF4D40E17C419D4AA1244005BCD31E52EF4D407AA4EA7432A1244096C0A7924EEF4D40E9BE3C0E1DA1244063A95D064CEF4D40B01D99DA0CA12440B3E2059A48EF4D40A860AFC808A1244061B342A845EF4D401E8542B005A12440964B8F3642EF4D40F66F9E8700A12440970DCC8F3DEF4D402F117846FBA02440D5C21AAD3AEF4D405FDF6ED4E7A024407F4CE16C36EF4D403003071EE0A024402AE54AA736EF4D4003A3B62ED7A02440F683882537EF4D402D1F8D41D2A0244030C183AC37EF4D40294C3E32B4A024408F07F8BC39EF4D403B7779B89CA02440EF54718B3BEF4D4021592E907FA02440867E016F3EEF4D40F565A7996AA02440A92A732E41EF4D4017C4B76059A0244007E2FC5744EF4D401B4576CB50A0244080E38B8347EF4D4099BA4E324CA02440A52C71914AEF4D4075C046264EA0244068C7A6994DEF4D402D2725B753A02440A9296DC04EEF4D400EF98FD75FA02440B5EBD17E4FEF4D4063D52DAD6CA024403859222050EF4D40E091938780A02440314C60E050EF4D400533981F9FA02440F4352F3152EF4D401F94209AB7A02440A6C0819F53EF4D403A983AAACBA02440C74EF21B55EF4D407EB9071CE1A02440D15B029956EF4D401D9A10EFF4A02440258F100E58EF4D4024A5642706A1244004E891C559EF4D407523F6ED0FA12440307838315BEF4D40414654B21CA12440473E5B2C5DEF4D40C94147842CA12440667533115FEF4D40FFEA0D2D38A1244022778C845FEF4D408F11EE1C6AA124406CFCC15962EF4D40ECEBC5CB83A124409D3F1C6663EF4D40522208919CA124408056604D64EF4D40BFB23488C0A12440EC10F9D365EF4D405EBCD402D9A12440D57D45B367EF4D40A9CE0D16ECA124402D58B4BE69EF4D401BBA9FBCFDA12440053F698D6CEF4D40925268E607A22440749369626FEF4D40AF8EC52A0CA22440516E72AE72EF4D40505113390DA22440D6C2BC1075EF4D40D6B45FDE10A224402696E53E77EF4D4002F18CF522A22440F7DFC9767AEF4D4096FE194C2FA22440F430C8A67BEF4D408DD1BF803DA22440265BCD3F7DEF4D408E736C9642A22440564B46507EEF4D40C65B05A64AA22440319D8EE080EF4D407BCC35F652A22440619DBF7A85EF4D40F90C591D58A224408284E53285EF4D4045467D8968A224405F08D63B84EF4D40E77AD4E380A22440F174C1A382EF4D403986A21299A22440ACE5A72781EF4D40BAF5FE63B3A22440C1B178417FEF4D400687B9CDBDA224400413357C7EEF4D4006F45631C8A22440326834B67DEF4D408886F9A6DEA2244027696DFD7BEF4D40A3E449C7EDA224405807E0F87AEF4D40B4A8E9400CA324402E62360379EF4D40FECAC32B1BA32440C103CE0178EF4D4028BC2CDC21A32440F0D0116077EF4D405DAA586434A32440177D281975EF4D400A0F78B740A32440A4CEF0AF73EF4D40BD375F774DA324401A217A4C72EF4D405E8B182860A32440A875D72270EF4D4012CCBC1375A324401F8368DD6DEF4D40DA818C4284A32440A72BF6516CEF4D405E577F4392A3244096904A046BEF4D4062EC589AA6A324405C72571169EF4D40CAFDD41FABA3244010B2271F6AEF4D4015F4A5C294A3244055C47B256CEF4D404660F40586A324405F2DD1666DEF4D407AC8DF8074A324400DE0B31E6FEF4D408F21EC0C60A32440853E156371EF4D4001FD4C864AA3244022F0D7D373EF4D400F661CC136A324407936901E76EF4D4042F8980322A324404A10AAA478EF4D403102477818A32440625BE56D79EF4D407C5B073012A32440DC5359D279EF4D4000C12E1CF5A2244070FE91BC7BEF4D4002E0AF9EE8A224406DE1DFB17CEF4D40AC54A457E5A22440331A78237DEF4D40E6402F6CE3A22440EC92F2947DEF4D40E27913A2E2A22440FB9900117EEF4D40FAAABC59E3A224402597D3C07EEF4D405609EA3AE5A22440D47819637FEF4D40C9C27829E8A22440074186DD7FEF4D4060B608D6EDA22440D926F95C80EF4D409DEB7445F9A22440BF92445181EF4D405B8BA82F00A324404BC9ACD081EF4D406CFB1B0906A32440C6C816F181EF4D40F2ACFD1910A324408005951582EF4D40E4635CC81AA32440C58BE4F881EF4D409DECC7CC31A3244064D1E7B381EF4D40EF6DC07B68A32440BCFAE4EE80EF4D405236BB7283A324404934A67580EF4D40B660DD699AA324404267BB0280EF4D40A9E2223EB6A324404EE2AA867FEF4D40B1F226FEBFA3244082DB85987FEF4D403F663393C8A324405F9C8FD47FEF4D40C5C113D3D1A3244075E76C4980EF4D40EC24B307D9A32440CBFB75D880EF4D4038CEFF60E1A32440D40AD3AC81EF4D40FFF122B4E8A324401678E28A82EF4D40156C5EFBF9A3244045B220C384EF4D4058375C1609A4244086DE089186EF4D4082E309FF13A42440C9FE27BE87EF4D40074E62891CA4244030FA817388EF4D400D1C887B2BA424402084896589EF4D402E3FCA7A35A424407A94A8D789EF4D40EE7E826840A424405816FB1B8AEF4D40ED27E1E14EA42440EDB286258AEF4D402E2E825665A424402148352C8AEF4D40FDB4339185A4244080EB62F989EF4D406F9D6E219AA42440159937BB89EF4D4057186D80CEA42440A71BBBD888EF4D404ACC8FBBD6A4244074F23AA388EF4D40C269561001A52440D504187B87EF4D40A84642E117A52440BF4942D486EF4D40108030A627A52440F0F9185386EF4D401379BAAE33A524400C72E5E185EF4D40794B9C4F41A524407557075085EF4D406732DDD655A52440774EB24284EF4D404624693A68A5244073AC407283EF4D4020AC65457AA5244091F4FBCF82EF4D4063CB84A488A52440B614EE7F82EF4D407F4EB3059AA524402608484282EF4D402EF8214FADA52440D9293D1682EF4D406217D4A6C0A52440714F23AD81EF4D4000833E03D5A5244055D34C3181EF4D40B607126FFEA52440C67DFB0E80EF4D4020FF98400DA62440E87B66C27FEF4D405A47C62C22A6244032E1DC6B7FEF4D409590A26633A62440C3B48AF37EEF4D40C205284349A62440E30995557EEF4D40C78BAF7E5AA624405A27CDE77DEF4D40529077FC70A62440D18BC0207DEF4D4093C36C1D9FA624403E7427207BEF4D4001F1D9D6B0A62440CE2C78677AEF4D40AC45E3B7C1A62440BBB379D079EF4D4099F4BF9ED1A624407B46D16879EF4D4044CD9632DCA624403C1D563C79EF4D4062F8F38AEAA62440D95A183379EF4D40813D0CD2F5A6244085C87B4E79EF4D4006AEDC44FEA62440E8EB209579EF4D40951BA24007A72440809FD2FB79EF4D403ACE388E0DA72440872092757AEF4D408C466AD118A724404A8FC77F7BEF4D4031FD65C023A72440CC5446D37CEF4D40B50F96332BA724401CDB9E087EEF4D4040270BFC31A724400BCE3A517FEF4D40B82A55353AA7244097A5011F81EF4D40B92C371A47A724406D3534BB83EF4D400563E2EB52A7244087B7AF3486EF4D40462463005AA72440C3F50D5388EF4D40D05C65BF5FA724403B8BF2268AEF4D40F934FE5C67A724406E0E1E668CEF4D40E570A52E6CA724402E0241238EEF4D4029D1E64275A72440F40EFF3F93EF4D4096D656A97AA72440B977A6FD95EF4D4084CAADB481A72440D6F7085398EF4D4088E41DBF88A724403DB724C199EF4D401E57209A93A724404C54CB9D9BEF4D40A828EC2FA4A72440A5984E2C9EEF4D4049978695ACA724402B699DE29FEF4D40B693AB3EAFA72440108F84DCA0EF4D40E623D87EB2A72440D3643E74A2EF4D40DB35AD1EB6A724406273397BA4EF4D40A8F1144BBAA724403D6FD8B8A6EF4D40DFE9349BBAA724409D7A35A8A7EF4D406F8838FCB8A72440217DF7D2A9EF4D407D043D79B6A72440DFBB5F47ACEF4D40B25B0422B0A72440CD4C276AB0EF4D40181C3060AFA72440EB750146B2EF4D40D87FD901ADA72440054E2C99B4EF4D404FA41600ACA724401DEFE817B7EF4D4083B08185ABA72440DF4511D1B9EF4D40F377A2A0ABA7244069B8C31FBDEF4D40310BCD4FA9A7244026499C83C0EF4D4051CE2F5BA5A724409E482CEDC4EF4D4036415F03A4A724406C01D2B0C8EF4D40452D7027A4A724408B98A87BCBEF4D408D225DC6A4A72440AE181A52CDEF4D40AAB70CC9A5A724402927FE4ED1EF4D400D447ABBA7A72440AAC3C688D3EF4D40E1F922D5A7A72440181AEDB8D3EF4D4005D20C65B3A724406A34E5B9D4EF4D40F6478515BBA72440E90E48ABD5EF4D40891A4D6ABEA7244027DB9A6AD5EF4D4006ECDD81C4A7244051830E6BD4EF4D4068009C40C7A7244070769503D4EF4D403C9AB08CC9A72440B93DCBBCD3EF4D405424F688CBA72440B0C5266AD3EF4D40D7B24C24CFA72440DFB057FBD2EF4D4072CE6931D0A724403ECAFBD1D2EF4D40ED77BDF9D0A724404FADB796D2EF4D406F475AABD2A72440DFA0EF32D2EF4D40B7EEAD9AD4A7244092A14CDAD1EF4D402F9ED113D6A72440973C811BD1EF4D40D918236BD6A72440222421C0D0EF4D40CC53EEEED6A724409F3E219AD0EF4D40D2704B95D8A72440AA779060D0EF4D406532762AD9A724401E13C136D0EF4D408DDB332BDAA72440F5CFD4BFCFEF4D409659C56BDAA72440BED8B691CFEF4D40ECD63053DAA72440FF885768CFEF4D40A9FF1093D9A72440774290F5CEEF4D4098EC58EED8A7244014898F27CEEF4D4066DFEC70D9A7244048F75CD4CDEF4D40D5EF69C4D9A72440A9C68E86CDEF4D40031FC6E9D9A72440F2342B44CDEF4D406B35765EDAA724405FC19E0ACDEF4D403B1582F3DAA72440D8940EE0CCEF4D401E994358DBA7244079FC5AB3CCEF4D4014BFAA34DCA7244053D4EDEECBEF4D4051E8D8EEDCA72440306523A6CBEF4D40F4C42B94DDA724402ED5514BCBEF4D407D92B39EDEA72440670D7A7BCAEF4D40019E75AFDEA7244018C93B4ECAEF4D40038FC36ADEA72440BF9DBEF1C9EF4D405B3177FDDCA72440E295D537C9EF4D4087031C23DCA72440B4D179DCC8EF4D40D4F29447DAA724401C9F7139C8EF4D40A6B1FCADD8A7244019A694E1C7EF4D4073780B4AD7A724409096BD3CC7EF4D40048CBAC5D6A724406EC0B9EEC6EF4D407595BEEFD6A7244082DD5E7EC6EF4D40747DD5B8D6A7244068AA252DC6EF4D408D74A1A0D5A72440433039A0C5EF4D40D133241DD5A72440E3F0CF31C5EF4D40ED245119D3A724405D176D28C4EF4D4027ADAC45D2A72440CC2192D1C3EF4D4069A7382ED1A724409D128094C3EF4D400E435B4ED0A72440E9472B3CC3EF4D4058535424CFA72440A4E960FBC2EF4D404A3FFC95CDA7244004A44C79C2EF4D4054D93E3ACBA72440D1F785C7C1EF4D40BC6627E9C8A72440A81BC4E7C0EF4D4069C38D3DC6A72440B6B17793BFEF4D405FBCDFDEC4A724408F306DC4BEEF4D40662CA75AC4A724405661D42BBEEF4D4027801059C4A72440D07EB4D6BDEF4D406AB4BD31C4A724405CF70A9CBDEF4D40378C0464C4A72440022B5014BDEF4D401D9D745AC5A72440F592F6A7BCEF4D401A1C7388C5A724400F4E2076BCEF4D401BB5CB10C7A724402664F7A5BBEF4D400F3404CDC7A72440A33BFA69BBEF4D40C5447C6AC9A72440CEBFAFF8BAEF4D4054B93949CAA7244081E93CD9BAEF4D40C31A46CECDA724409A16B39ABAEF4D40F21A4E55D0A7244063D66673BAEF4D409116EF6ED2A72440DC009642BAEF4D40EA10F0A3D3A72440B3C8510CBAEF4D40EC33F45ED7A7244080910F12B9EF4D40DE6CF011D8A724403433C1C1B8EF4D40127CDF7BD9A72440D834FE39B8EF4D40C50395B8D9A7244071671CCEB7EF4D40405EA40ADAA72440F2B8EF9CB7EF4D40FC29FF36DBA7244024537330B7EF4D4037AF079BDBA72440470C3BFFB6EF4D408C2E6BB1DBA724403493B6CFB6EF4D404DAE72A9DBA72440A478022DB6EF4D407CF9922FDAA7244095425D6FB5EF4D405A1C52FED7A72440C8F8932AB4EF4D409E5E68D3D7A72440A2E9FDFEB3EF4D40F66FB9E2D7A724408948B6C8B3EF4D4032DC7553D8A7244074F5FA9BB3EF4D40D31620F4D8A7244026B7206FB3EF4D40CE0B6658D9A72440E4FF693FB3EF4D4047C1BF83D9A724404F9002FDB2EF4D40253D2299D9A72440F43B7756B2EF4D400EC792A9DAA72440616CDBF6B1EF4D4017EEFBDCDBA72440254F776BB1EF4D40A0199F49DCA72440199676FFB0EF4D40C6A7B2A5DCA7244073133551B0EF4D40DE745650DCA72440123561D7AFEF4D40972E49FADBA72440C7665EA4AFEF4D40B0487FFADBA72440C8378A5AAFEF4D4097E77ED3DDA7244066D72BC1AEEF4D40071AA27BDFA724405DE23B6DAEEF4D409C86CCBAE0A724409158F905AEEF4D40CD8E28AAE1A72440C191DC92ADEF4D40F479C3E9E1A72440055CB85EADEF4D407E58D9D4E1A7244046BE05B6ACEF4D4023FC2F17E2A7244082BBDD47ACEF4D4042621629E2A72440F3C67B8BABEF4D40D8C8F290E2A724400097B14CABEF4D409E4108BCE4A72440B0427CCDAAEF4D401B1AA723E5A724400783308DAAEF4D40D1FAC4A4E5A7244048B3490BAAEF4D40C3BE5DFFE6A7244031722394A9EF4D400497BC13E8A72440329F0B02A9EF4D4004135F58E8A72440D34DDDC7A8EF4D4085AFF960E8A724408FDB148DA8EF4D403B985D34E8A72440A4014931A8EF4D4058B3D839E8A72440C046ECE2A7EF4D40352C5D81E8A724408CAED0BAA7EF4D405B2018A4E8A7244035D1868DA7EF4D402BCCB59AE8A7244015181F2DA7EF4D403B0F0B67E8A7244074F53AF0A6EF4D40870CB500E7A72440D34E543CA6EF4D401DD1F886E5A72440BEC21AA5A5EF4D406BEE777CE4A724408C3A076EA5EF4D400D62D2D1E3A72440D4DAB536A5EF4D40B06AFF93E2A724400FA7559FA4EF4D4088D0C269E0A724406F3D3AF7A3EF4D4037345B32DEA724409C9F496DA3EF4D40F40C4344DDA72440677D0352A3EF4D40B14B7FE3DBA72440BF53C131A3EF4D4087D1D440DAA724400DADA911A3EF4D40FC13E6E6D2A7244010C98CC6A2EF4D40133C08D4CFA7244099CAB9BBA2EF4D4010F3D384CDA72440D9FE99A3A2EF4D40D18AD35DCCA7244013FF4D9BA2EF4D4077DEC216CAA72440A97F0D6BA2EF4D40E3136557C9A7244035A12048A2EF4D40A837EA57C8A724405919FF0AA2EF4D40AF380693C7A724405A576EC5A1EF4D400C1136CBC3A72440DD7E9B3BA0EF4D40AB0C2146C0A724406EB738919EEF4D40E42203EDBEA72440DDD327309EEF4D40A38153F5BDA72440F21F4EFE9DEF4D40D6378BD4BCA724407CEED4D19DEF4D407F1AC29CBBA72440696F71AB9DEF4D40AA2CC9CCB7A724406191AA409DEF4D400C008B8CB5A72440B2BF00F09CEF4D4032FC7FCCB3A7244005836A889CEF4D402E9FA793AFA72440110DBCBF9BEF4D40F271AC03AEA72440DD8B727E9BEF4D408CDF3E5FA9A72440F60A36DD9AEF4D402194E8D4A7A724409A3251BF9AEF4D40885EA67FA6A72440A01D049C9AEF4D4099B8B55FA5A72440B05BD0749AEF4D40E7A00737A4A724405364F9619AEF4D40806CDCDCA2A72440CE3077459AEF4D40D4B5513E9EA72440E9DD20C999EF4D403FFAB39B9BA72440476CE46899EF4D40AD4E3C4B9AA72440F0A80B3E99EF4D40709A66EA97A72440C9EDE3DC98EF4D400D8BCDBA95A724409DFE3A5E98EF4D402B59359193A72440DA10390598EF4D40CCA08BAE91A72440448802A697EF4D4058810CDB90A72440022B937597EF4D409F0228AE8FA724407CFFB52297EF4D4094A3BA228EA724401E385FD896EF4D409106A47F8DA724405F11D4AA96EF4D4007F7F3418CA72440BF89341496EF4D40AFD6456C8BA72440D060E18A95EF4D409BF552508BA724400A56C12695EF4D40D74C08178BA72440566223EC94EF4D40BA80938A8AA724408B52959094EF4D407FB642408AA72440CD535E3694EF4D402BCD952F8AA7244058C05CF393EF4D40FAC0B12F89A72440DD72A2F792EF4D4067E577A688A72440E993BE8A92EF4D40B73AB30589A72440EB1E673B92EF4D40AA4A789289A7244065078C0292EF4D403F0632068AA72440ED5DF9C291EF4D406BCE3B848AA72440F1ED7E9E91EF4D4039A627578CA724402E65647591EF4D40E563C7478EA72440A11B0A2591EF4D40B56BABD78EA724407F4CC3FF90EF4D4019A208008FA724407A3D33D090EF4D401990DDDD8EA72440E35F409090EF4D4074FE1CC48DA72440D4CADED38FEF4D406FCB15368DA72440F3B6DB488FEF4D407BDE5BD48AA72440B81E18268EEF4D40B8D77BCC89A7244056E93FB48DEF4D40B6B3B92189A7244056B22D7C8DEF4D4075058E6D87A7244024E0CE138DEF4D40C5854C5385A724403C2930AA8CEF4D401009429284A724406C51B87C8CEF4D401191AE7380A72440340849C28BEF4D400428C5277FA72440FD01638E8BEF4D40DBFFC2347EA7244069CC3C548BEF4D40B3D19BA87CA72440AF6FB6DF8AEF4D4044E813AD7BA7244001D418708AEF4D40E8155C877AA72440BAD269D989EF4D402B337EAA79A72440E5B4924889EF4D400761465779A724401B384C6B88EF4D40EEC83DE779A724401EB41AB087EF4D40DA5F9F3A7AA7244078A1368787EF4D40F62DFECA7AA72440FAF3F26487EF4D40A519E0AE7BA724403CDB364087EF4D4002126B2280A724404704F6AE86EF4D40866DA41281A72440D987748C86EF4D40F9CBACFB81A72440B21A6F6286EF4D4053E7742183A724409282883D86EF4D40AC23E0C584A724407561EBF785EF4D4057C4297787A72440F9BB1BAD85EF4D4070B87CA68AA72440ADA4D13D85EF4D40B38CF63D8CA7244096FC35F284EF4D408A3D54878DA72440AFDCF5CA84EF4D407A000CCD8DA7244014968E9784EF4D409762B33C8EA72440C3440C6484EF4D40EBD4A9628EA72440D89A6C2584EF4D4081AEB3748CA72440B0F7163483EF4D40F4DB45FC8BA724401474F50A83EF4D403B9282238BA7244085A00EDF82EF4D402A9088EA89A72440844423B182EF4D40F8748F7087A72440A5042E6E82EF4D40D8AF1FD684A724402191264182EF4D403C1CB17383A72440775C591682EF4D40960A25E180A7244092C504AA81EF4D4015ECB3167DA72440CFD28B1681EF4D4043634D7C7BA724409F3B69B980EF4D40C75E3DA77AA72440B6D4845980EF4D409D05EB257AA7244023B2FED27FEF4D40762FAD2D7AA7244097E9456D7FEF4D4045DC188E7AA72440F662CBFF7EEF4D4093368CFD80A724400BB221757BEF4D40CAE787E582A7244066203A147BEF4D406CC196EE84A72440A386D3C67AEF4D40AF85192686A7244087C75FA07AEF4D40B55CAEA488A72440AD36B21E7AEF4D4084E41D658AA72440E8664AA779EF4D406685A05F8BA72440F0618B5479EF4D40FD0A2ED78BA72440AFCF660779EF4D4019D235068EA7244070670BA178EF4D406B44C2A08EA724403749747378EF4D404D8C593890A724405167992878EF4D409AF6131791A72440259D260978EF4D4056D128C591A72440280C4EE577EF4D402D91A13393A724402AEA7D5477EF4D4029BD2D3293A7244049ADC92577EF4D402B83A0ED92A72440D521B8EF76EF4D40440B091F92A724405D01D39276EF4D40A121CD7691A72440B32D916A76EF4D40DF9E3DC68FA7244001C6C91876EF4D40A301775E8FA724407C1654E775EF4D40D09C23408FA7244010307ABF75EF4D40AE718C2C91A724404096C45475EF4D4035D7500A92A72440F88D4B2F75EF4D40FD36338392A7244014701A1075EF4D4015D7F10C97A7244037CF10C870EF4D4060EB228298A72440BB5C6C6170EF4D407DDEDD3D99A72440CF1C6C2270EF4D40599A91A79AA724409E627DE46FEF4D40A6926B299BA724401F28C68C6FEF4D40A8D236919AA72440B882160D6FEF4D4081B0B1A29AA724409FEC5CE46EEF4D4010FE8B279BA72440A133799F6EEF4D40509937ED9BA7244093F5A3536EEF4D40E3559E719DA7244036F8A1DB6DEF4D404A670F489EA72440325539886DEF4D4090DC514E9FA72440F0E19B596DEF4D401020D334A0A724409D0BC61F6DEF4D40DE34FB68A1A72440E94BE7096DEF4D406C979D86A2A72440FF5C21FD6CEF4D4018032026A4A724404BF2F9E36CEF4D4084FF731CA5A724406C5835C26CEF4D4045CB7679A6A72440028674A56CEF4D40471D4B3BAFA724404352C25C6CEF4D4087885340B5A72440DFE994166CEF4D40DC07462BB9A724407C428AD86BEF4D406CF8B63FBBA724401ACD02AD6BEF4D4093E58ECDBEA724409205DD5A6BEF4D40AB1AB284C1A72440B995480F6BEF4D40A300AB6FC3A72440D56734C16AEF4D40F27A396BC6A724406CD545856AEF4D40D6738E42C8A72440DD305D526AEF4D408E12E4F6C9A724401619E7FF69EF4D4048621918CBA7244038C762BE69EF4D40A5F2A9BDCBA724409BA7BD8A69EF4D4093CF1DF9CCA72440FCB2785769EF4D40F4198C9FCEA7244029D8FDF868EF4D402302BB63D1A72440DEC87D8E68EF4D40BFFD9D6FD2A724407B149A5D68EF4D40F9FFCB8ED3A72440DF5CF33468EF4D406D54904ED6A724403A2CECF967EF4D406EA04CA3D7A724401054E0CE67EF4D409190554FD8A724400F743A9E67EF4D405699AA03DAA72440B355C44B67EF4D40CB5DFC7ADAA72440180BC92267EF4D40C7A49BC5DAA7244047DC96E866EF4D408B91EF84DBA72440ACF82DC066EF4D401725C1A3DCA7244068E7449566EF4D40AA372C11DEA72440FF45AE6E66EF4D407B5DFB35DFA72440A856C14366EF4D40053D755CE0A724403573B4FD65EF4D402754E38CE1A724402B717DD065EF4D40E9FAAA5EE2A72440FE120CAB65EF4D4068E362D5E2A72440CAE04C7E65EF4D40A09DF526E3A72440CD111D4A65EF4D4072E9B4F0E3A724404C4DE21765EF4D40E4768CCFE4A72440563930F964EF4D40BE904680E6A72440E4AD229064EF4D40D746C3A3E7A724402927ED5C64EF4D40F1EA6F7AE8A72440B004060B64EF4D40F0C6A75DE8A724403E654BC763EF4D402A2D7308E8A72440990C8E9963EF4D4085F4284AE7A72440EB57BD5763EF4D4001214A7EE5A724403C909A1663EF4D40A1D68CABE2A724402985A6DA62EF4D402C572243E1A72440B54CDDAF62EF4D40725E4ECBE0A7244007B97F8A62EF4D40F0571237E0A72440D5BC544962EF4D40BF970FEDDEA72440428F25D661EF4D402E3B851DDEA72440781FE59861EF4D40935B2A24DDA724400185805C61EF4D409CFFE81FDCA72440B7AAEA2661EF4D403E713CC3DAA72440B82598FA60EF4D40DED3134CD9A7244058B384BE60EF4D401B024FEED7A72440AF47C06560EF4D4000F9BD31D6A72440A4F6AAC85FEF4D40FD2566BED4A72440E2B95A595FEF4D409AC8BA8FD3A72440DBCBDC205FEF4D4065BE5EBECFA7244036A20CAD5EEF4D40EECA52D4CDA72440357326905EEF4D40FE074997CCA7244030834B6E5EEF4D409D639586CBA724407720655B5EEF4D40652D11D3C9A72440C2EECA675EEF4D4060E1BD4EC8A724408F43E2495EEF4D4061950367C7A72440EB94DA305EEF4D4030C2D95DC6A72440FF970F025EEF4D403A66CBA5C5A724402F8FBCC15DEF4D405BE52CE9C4A724402BE0CB645DEF4D40C9A876A5C4A72440BCCDFF335DEF4D409B9DF984C4A7244050DD97FE5CEF4D409EC074AFC4A724407836956B5CEF4D40F3D91889C4A724400BEBF1365CEF4D40CC5B8D27C4A7244091F2F9065CEF4D4086F39EEEC3A724402A589ECE5BEF4D4036773CCFC4A72440A23EE26F5BEF4D40FF63BFC2C4A72440C91991215BEF4D40851CAB00C5A724405EF8E1E25AEF4D4057E6C8C4C5A72440F96DEDB25AEF4D40C0F4ECADC6A7244080B9A8895AEF4D407060BF98C7A724402AF1EE6A5AEF4D40404BABDDC8A72440ECC07C4D5AEF4D40F2A3BBDFC9A7244088D42E2A5AEF4D40666A9BF1CAA72440BC4447F959EF4D402E713912CCA724400CECA9D959EF4D40632F0EF7CCA72440D6FFF3BA59EF4D400A6A4B2CCFA724407927165659EF4D404129CE9AD2A72440306CBA8A58EF4D4073EBDBA2D3A7244018A0686758EF4D40DD520344D8A72440DC6D0F1358EF4D4064AA744ADBA724406B0C52D057EF4D40CF997C54DEA72440A830817E57EF4D40C282D9B1DFA72440C8A2026457EF4D40B22E00ADE8A72440500EAEE556EF4D4076AC1CF9E9A72440D5C3BFCF56EF4D40F2174BC5EBA72440B94024A256EF4D40B7644434EDA72440C3BE578556EF4D402CE851F2EEA7244038CAE06F56EF4D4003A802D4F2A724408AB9841D56EF4D40337FE07DF9A72440F1DA82EA55EF4D40C233084FFCA7244058D201F755EF4D406432AB56FEA72440DB40921156EF4D40DF18B5AAFFA72440D76D572D56EF4D40F6FB229F00A824406503DC4A56EF4D401A6FC67701A82440DEF7017656EF4D40E762EEF203A8244087BD7EC056EF4D405019D8B007A824400933FBDF56EF4D40B284A42F09A8244071E33FDB56EF4D40B4105B0F0EA82440B9D6FBBC56EF4D40454E525110A82440038FF0A756EF4D40D80A009213A824407C4F2C8056EF4D4090773E1D15A82440FC7EC15856EF4D40752C824E16A82440F3E3CF3056EF4D402AD7994519A82440473804D955EF4D40599D83741CA824403E5A776755EF4D40DFC0B5E31DA82440C576812655EF4D404BE428EB1EA8244053B16BFF54EF4D40E4028CE51FA82440A4A196D154EF4D40E38D218521A82440850DDA6D54EF4D402F6F3AF322A82440A742720054EF4D404B2332E324A8244018ECA88653EF4D40842FE72827A82440904EB5A752EF4D4089816A7328A82440DA0BA73C52EF4D40E04299B62AA824401A0AE34D51EF4D4082EF4AFF2AA82440F359A40751EF4D40D5EE8A182BA8244057B787C450EF4D40C55B0F852BA82440670C717D50EF4D4028C88D1D2CA82440DC930C4350EF4D408DBD6FC32CA8244004FC53C64FEF4D405C3956902CA824407B01DE414FEF4D40EFD18AB32CA82440EE3F97174FEF4D406314EE5F2DA824404BA933E94EEF4D4063E15A702EA824402BA342AF4EEF4D40AEFFEB6F30A8244067D3B3714EEF4D40A24E993B32A82440BE326A1B4EEF4D401DDB971533A824401C1943934DEF4D409B66431436A824407706A8894CEF4D40DE98246936A82440D3688DF94BEF4D404DDE6EE936A82440DAD6B6BD4BEF4D4073526DA437A824408ACC317A4BEF4D40A919C15539A8244016E6923A4BEF4D40FB8DCEE73AA8244095BFBEF24AEF4D405FA0D5543CA824408BC63AA44AEF4D40F150E7DF3CA82440C0AAD4604AEF4D40687ADC1A3EA82440AF758C2A4AEF4D405DFC527B3FA82440FB30F7FD49EF4D40061A354740A82440C8859FB349EF4D403DE1D7ED40A824405D59C18649EF4D40A38458D141A8244007BFC25F49EF4D407FC8FA2943A82440E3E28FDC48EF4D40D876C68745A824408F64F82348EF4D40BD9F731C47A8244031830AC747EF4D402470ADB049A82440C813A95C47EF4D403E69781A4CA82440DDB5B4C946EF4D40DF1AA9CE4DA8244040A07D7646EF4D40B6F012694EA82440549E254846EF4D40232F43C54EA8244094B54FC045EF4D404782FF8051A8244076B4182145EF4D408B4D66D953A824409BF2486C44EF4D4077CE6A3D54A824407E9F103B44EF4D40B294BAA854A824400B2372EC43EF4D401817183E55A82440C85B799E43EF4D40333FD0D458A824400A3377C842EF4D40AF7430815AA824404A624D4442EF4D400BA017D65BA82440B44EC2A941EF4D40B8AC15155CA82440FE29DA7141EF4D409EC8BAC05EA824409C75659340EF4D40322DE95A60A82440978D703340EF4D404B53243262A824402224DC693FEF4D40936CBCB662A8244094C276233FEF4D408C8A038E63A82440E24DFEFA3EEF4D40149F2F7964A8244013BA86DE3EEF4D402C9F572866A8244063B659913EEF4D401A7E807D67A82440B00EFB1D3EEF4D4054D05E2068A8244054EC6E8E3DEF4D407424BF6D68A82440EAA48E653DEF4D40EBAA4D6669A82440E1EFC2063DEF4D40BBA6CDA46AA82440947411763CEF4D40C3825F556BA82440DC415E3C3CEF4D40BF023F2A6CA82440FE30D6043CEF4D404B36B71F6DA82440CBF2CBDD3BEF4D402C848DC56EA824401AB2E2C63BEF4D40C342608573A82440A8EA4FC23BEF4D407338B1A174A82440C50EECD23BEF4D4062AA9C6076A82440F117100E3CEF4D40EF92BE1377A82440CE05832F3CEF4D4032870BF279A82440245217FF3CEF4D408B6B4E787BA824403E18B74E3DEF4D408C62AA6F7DA82440D9AF88993DEF4D40CCB7C2517EA82440506CD6B43DEF4D40B59DB29780A8244093864FDE3DEF4D40594306C581A824406BCED9E83DEF4D40B0C9480583A82440A5B85EF93DEF4D4085B350C585A824400B44D9303EEF4D407072008086A824402D75125C3EEF4D40434AAADF88A82440057EB2263FEF4D40E354AB218AA824407DF2C2B23FEF4D40678E5A1F8BA824403D7A430A40EF4D40473708808CA824405144C59A40EF4D403720DF9C8DA82440A840BAF940EF4D40F4EBFFC98EA824407DB5184E41EF4D4043D9A01990A82440F996569941EF4D40C4582F0D92A82440C8ED641742EF4D40BF21934C94A82440F0B4738842EF4D40466A2A8695A82440C089CDDF42EF4D40EEE6A33898A82440B4391BC943EF4D403CE7EED398A8244022635EEB43EF4D408D01ECE49AA82440577E001B44EF4D407EEAAAA99BA824403A73253A44EF4D40A10765919CA824406AF32C5344EF4D4072139B0F9EA824409D67587044EF4D40F0F437119FA82440AEE85C9544EF4D40A2EADF9CA0A8244087DB34E144EF4D40820EE7F6A1A82440D9F5F5FC44EF4D407F37A9EAA3A824404013303145EF4D401C50B506AAA824405A10977B45EF4D40A20B73F1ABA82440BEA7567745EF4D4097CF8521ADA824404CF4876D45EF4D40648B18FCAEA824409DD99E7445EF4D408699296CB0A824407EF9438445EF4D4055D15BA8B1A82440492FD9A045EF4D4078A8E0E5B2A824407BF9B6C545EF4D408069BF12B4A82440E9F3E8F245EF4D4058C57DA6B6A82440259AC46646EF4D40432EB858BDA82440AF3BCD4246EF4D40E2444313C2A82440EEC5171D46EF4D40F36E4C9BC4A824400FF891FC45EF4D40671F86C2C6A824407BD643D645EF4D40B72002CCC7A824402C2AFBBB45EF4D40B60BFA9EC8A824409E6B119E45EF4D4077487994CAA824404F8A966C45EF4D401BAF15B8CBA82440B96CCC5F45EF4D4032358B92CEA82440E20D073645EF4D400885F003D1A824403548D91D45EF4D40C993F8F5D2A8244077A332FC44EF4D4010C883BBD3A82440D94347D544EF4D400A9129ADD5A82440CC66B38B44EF4D40D3B1C0DED6A82440A10B594044EF4D40F972F1D2D7A82440EEDF5B5C44EF4D404DE43843D8A824404212F37744EF4D4032E30024DBA8244000DB56E644EF4D40310064BADBA8244095DE640F45EF4D4096CEEA2DDCA824406A20513F45EF4D401EE11CBBDCA8244093B2639F45EF4D40F010BAB1DCA82440A9713C2046EF4D401C6FC84FDCA824402CF4EC8346EF4D40328D3A69DBA824400207580847EF4D40FFBEC74BDBA82440DF5F193147EF4D409F116A79DBA824409B2E41DE47EF4D40EEA9EF31DCA8244033DD81B748EF4D404072E8BBDCA824402A3FEA2849EF4D40D3BA0AC2DCA82440E407524F49EF4D40BC909520DCA82440B5D7919C49EF4D40F4A21E7CDBA82440EB26FED649EF4D40F4103BB3DAA8244034907E0E4AEF4D4057A500A7D9A824400930203D4AEF4D4035044144D7A824409B46828B4AEF4D40FFD7D927D5A82440F9A596F54AEF4D406868EBF7D3A82440910CD1254BEF4D404CE51F0AD3A824408E6F62574BEF4D40A62211A7D1A824408E7BBCBE4BEF4D40A67A1F9DD0A824406BEBACFB4BEF4D404CD78A5CCFA82440BE813B344CEF4D401857E808CEA82440A0AE0E664CEF4D405E5626ECCCA82440F043C59D4CEF4D40001D552ACCA824400DD108DC4CEF4D402C5C3EB1CBA824400063631F4DEF4D40F093FD33CBA824400067B8934DEF4D402B1FDDD2CAA82440DC7D03D74DEF4D40C5739258CAA824409F42D6124EEF4D405604610ACAA82440C9FA1B5C4EEF4D4084A005E6C9A82440EBB330CA4EEF4D409F9D04D9C9A8244005A307F04FEF4D40514E2508CAA82440D9F6F83550EF4D40F8571635CBA82440C2892BD450EF4D4012F58365CBA824406A92BAFC50EF4D40D0D2A61BCBA82440DB5F1C6151EF4D40C537A8ABCAA824404D7B5C9251EF4D407734E08CC9A8244098ACF0E251EF4D405BFAD212C9A824408F00452052EF4D40BD40907BC8A824401F3CDC8752EF4D408A9B123AC8A82440D8E49ED552EF4D402A9C3E54C8A824402434732E53EF4D4037F6248BC8A82440F77C015A53EF4D40C4BA2F6AC9A82440EA7FBBD253EF4D40D8A45CA9C9A824403FBC940C54EF4D40146EAFA8C9A824409ACD655354EF4D40A96365F3C8A82440B55AA50555EF4D40D3ED0103C9A8244009E4DF4155EF4D40F0F2E785C9A824408C2185AC55EF4D40F6638D86C9A8244090C79EFB55EF4D4027E94143C9A82440C4BC153E56EF4D4004B68F20C9A82440B0810A9156EF4D405F77A683C9A82440DA3CB76057EF4D40376EE927C9A824402B8E3AA057EF4D40DE70DEA7C8A82440C2C092DD57EF4D400E2B9131C8A82440FE22EA5758EF4D4033A4E589C7A82440931E57C958EF4D40E467C0CFC6A82440B0B7211259EF4D408F893B63C5A8244099DE538959EF4D4071C722FEC4A82440A436C5B359EF4D405CF7B09EC4A8244091389B015AEF4D407CE49B82C4A82440C7E4FA7D5AEF4D40978A70BEC4A82440672969C85AEF4D40CE992074C5A82440A24A571F5BEF4D4024AEBA1CC6A824402644DB495BEF4D4018D7B434C8A824401C862AA55BEF4D4056F640B3C8A824409ECE08CF5BEF4D403A16BF07C9A82440856641F85BEF4D40A5E2D460C9A82440A182C2635CEF4D4056E6FF57C9A82440F867099D5CEF4D408ADDD279C9A8244050E4B9DA5CEF4D401A6F8C6FC9A82440426DF70A5DEF4D40A17BB3EDC8A8244057EC033D5DEF4D4060B9BE45C8A824402B9999615DEF4D401FFA9054C6A82440D18E30AE5DEF4D4052D2986FC3A82440BDC15C2C5EEF4D4055F7743EC2A8244046560F555EEF4D4051ECDF23BEA82440265D66BA5EEF4D4044DF3410BDA82440067802E05EEF4D408EDFAB8EBAA824405F41DD4E5FEF4D40A64E8949B9A82440110C79905FEF4D40CA9F1631B7A82440461A671360EF4D404D4A3968B5A82440C6A458C660EF4D40D50AEFD7B4A82440F61B9D5961EF4D4060DC99DAB4A824400B25D98F61EF4D40D8F9812BB5A824401E3725C861EF4D40B0216BAAB6A82440A506C07F62EF4D40AE386E8FB7A824407B4ECBD262EF4D403BE6964DBBA824409F455EAF63EF4D40D8C33ADEBBA8244044BBF1D963EF4D40B826C09ABCA82440F574213664EF4D4087405582BDA8244055DC52E464EF4D40B33DBA9EBEA82440708AEF6565EF4D40BAA06CEABFA82440A37CFEBD65EF4D40FA836FF1C0A82440632F3BDF65EF4D400F3C8A21C2A82440165517FB65EF4D408C7FA596C3A824403851B20466EF4D40FA211780C8A8244021B7C1FD65EF4D401BBA39FAC9A82440B194520166EF4D4002D4DCDACCA824404FDE9F2366EF4D40AB5AA703CEA82440AC4A373766EF4D40B0DBAA65D0A8244093413B7A66EF4D40CDF3A630D1A8244056DCDD9A66EF4D4049315E91D1A824402B4590C566EF4D40FFADEFB5D1A8244079D2E7EE66EF4D4011B847A8D0A8244039F32A3A67EF4D4082461748D0A824403368D15D67EF4D40FE8600F5D0A824403195C67D67EF4D40AC3F1942D2A82440B11E899367EF4D4099527417D5A82440B3EEB79467EF4D40BCF33869E0A8244058F5853767EF4D406EA3BFB1E1A82440A0D5AA3067EF4D4049C2B23EE3A824404E83753967EF4D40BBB906F7E4A824406B742E4B67EF4D408E4ED68FE6A82440599B305367EF4D40DAD2FCD1E9A8244045EE1F5A67EF4D409280D2B0ECA82440276E217167EF4D40DFF28204EEA824405FF6A38A67EF4D408948A296EFA82440122AD0B367EF4D4032F96C0DF3A8244065C9A9FD67EF4D4020386EADF4A82440BFD82F0D68EF4D40825741BAF8A824405A1BD57D68EF4D40DD1BF996F9A82440CF81EA9C68EF4D40E6EE1D4AFAA824404A585DBE68EF4D4087EE50C2FAA824406022FDE568EF4D404467FAD2FBA82440C80C236969EF4D40D9A5BB1BFCA82440B0EDE49369EF4D40F852463BFCA82440EA9546C369EF4D40A2C6DC25FCA82440EC52D1F869EF4D40147439B1FBA8244044C608586AEF4D400E429196FBA82440D4EFC6B76AEF4D4027DDF54BFBA824403132F9F16AEF4D40C520361EFAA82440878D6C556BEF4D4006A526C1F9A82440144EA78C6BEF4D405B3F8D90F9A82440ED5697D36BEF4D403A1D8B86F9A82440CA4E012B6CEF4D40859D9EC1F8A824403C7B5B7B6CEF4D40EC0E0D18F8A8244024E266066DEF4D40D0F9E5BFF7A824404DBED6366DEF4D40D28EE4DAF7A82440E2A1456F6DEF4D40BB120AACF8A824404DDCFADB6DEF4D40D9812E51F9A82440920D53166EEF4D405F039DE6F9A8244078CE5A396EEF4D4072F13531FBA82440CBC8F7646EEF4D40BBBF0EAEFDA82440E90154946EEF4D404DC82335FFA82440994BE39D6EEF4D40C9C5581406A924404DFBF8666EEF4D4034A7BC9607A9244023D629536EEF4D4099806CBE08A92440334D4F3A6EEF4D401151B4310AA924407C9DF3126EEF4D4035E185C60BA92440D51871DC6DEF4D403BBF32CF0EA9244054E9AB5C6DEF4D404E07080512A92440A1CD75CB6CEF4D406C63870214A92440E26D6E5B6CEF4D40ED399F3916A924400AA446B76BEF4D40ECEC9F5617A924408E8A11816BEF4D40E4864D9218A92440EDC24D4F6BEF4D40BF44FB9619A924408ECEE5166BEF4D404D647E6B1AA9244036441BDD6AEF4D40C0D8CA641BA9244039F47EA86AEF4D40F0FBFC711CA924404A81E37F6AEF4D40944F57B51DA924407AC4A6586AEF4D40F8D4D28D1EA92440D6F6B5376AEF4D4018CBEF4B1FA924404A0CC5076AEF4D4037F780F821A92440D43AAB0969EF4D403B0A33AC22A924400B328CE368EF4D409046E62C22A9244050677E8F68EF4D40838C8BC821A9244037C0892868EF4D40C6B3423C22A92440DA340C5367EF4D40A31580C422A92440624CFEB266EF4D4049583DD122A9244024D0A58B65EF4D400039DDB323A92440E61A217E64EF4D402C7825FD24A924405B28F54F63EF4D401860C23C25A924405FDD653461EF4D40638196B225A92440A69C202160EF4D407652E15C25A92440F0A9CA345FEF4D405152E5B924A92440E8F36A4C5EEF4D40604171BE25A92440139FAC575DEF4D40F75CC29F25A9244077B7A5975CEF4D40075EE57328A92440D2EBB6D55BEF4D4011E644C52AA92440CF948ECF5AEF4D40216360342AA924402A09E4E759EF4D404BCF35BE2BA92440939D2F4759EF4D40B15737842DA9244044E780CD58EF4D40CE7BCC3230A9244023051F7258EF4D40D89A470C36A92440F663402258EF4D40FEE729913AA92440B0CC2EFE57EF4D40DF6A3C1E40A92440E6B036DD57EF4D4052C64DFD42A92440F5C3BB6D58EF4D405EED586B43A92440EC062AC658EF4D4055A2873D44A924408C704E9558EF4D405475081A47A9244059CD9FD457EF4D409E2350F047A92440D3B0556257EF4D4095FA96CB48A92440240479DC56EF4D407D4B219349A92440F5DA534456EF4D40677C4D444BA92440C2469F9755EF4D40440293924DA92440DB706BFE54EF4D40164BDEC94DA924406A8FF05B54EF4D40809FFE524EA924403A04C6F253EF4D4082DED8764FA92440A2219C7653EF4D40B5CE0BD950A92440595CE7C052EF4D400CAA1E6951A92440CC876A6B52EF4D40D013EA1451A924409C1B9A0B52EF4D402141ACDA56A924409DE5F6DA51EF4D408F6E3FD956A92440B5517DDA51EF4D40F8215EBB52A92440973A14D34FEF4D4086A20D374AA92440F98CACF24DEF4D40F055D13F3CA924400877BB404CEF4D4088838C0D29A92440368BEA584AEF4D40ACB6D4C61BA924400CABDAB748EF4D40A7F6A80C16A9244080106EBE47EF4D401F2EF3A912A9244009C3805546EF4D402DE1F2E70FA92440020D247544EF4D40FCCD351C0FA92440582991F741EF4D401A65BA0E0FA92440609C0E2C40EF4D401A27B7D611A92440BDC690CC3DEF4D4062BDBBDD16A92440957F49203BEF4D40AAD48C7F16A9244048FEBB3C38EF4D409F983C2D18A9244003265A6F36EF4D40EB3F759E1FA92440C4D40BC933EF4D4001F9B0812BA92440D280DC3D30EF4D40B8CBE43E30A92440FBF561AB2DEF4D40927DBEE52AA9244015F453B22BEF4D40D34D858D21A9244068DCCE7829EF4D404E69FE7E0CA924402CD2EE4424EF4D40D23D233902A924404B0E268221EF4D403D34F7DB00A92440B950907120EF4D4074220DE4FFA8244036230AC71EEF4D409E2470C003A924406293DEE718EF4D40A4A1D1E5FFA824405C8B7C6A14EF4D409B2B67DA00A9244010D1956E10EF4D401FCD8F7302A92440BFBC2EB00DEF4D405A85503D04A92440FB366D660BEF4D4049CE822C07A92440A35CEDAA08EF4D4092C1E2F00BA9244018E3F61F06EF4D40B87BB98211A924406F75C89F03EF4D40181E37C01DA924401B7522A7FFEE4D40A25C498E25A9244060CCED32FCEE4D404563AE452CA9244026866C67F9EE4D40ED0BEF1335A924409992724DF4EE4D40CA49262935A92440B012A654F2EE4D40A6CEC41234A9244038498581F0EE4D40E775AB3A33A924408C7FA297EEEE4D40829C4A5F35A924403CF0C22EECEE4D407422AA5139A9244004777C57E9EE4D40A9EB4FA43DA9244060FD3AF3E6EE4D4060CB288D42A9244053ECF06BE4EE4D40A183EF8149A92440FBFD6784E1EE4D4097D60B6552A9244090DCF53EDEEE4D4070117CE758A92440616A082FDBEE4D40317C580C5CA92440F785E4E2D8EE4D4011B0FFF65DA924400E3BF815D6EE4D40225853BC5FA92440697C04A4D1EE4D401C6EE8955FA9244092C0208ED0EE4D406CAC5CF15AA92440ABF2B822CDEE4D4072C7F42D53A92440E16C7060C9EE4D4089218ABB4EA92440797E2228C6EE4D40A6E81D7C4CA92440361893F4C3EE4D409E7F739C47A924406C7981B3C0EE4D40908B6F603DA92440B0DAF689BBEE4D405BCF125447A924402A840045BBEE4D40C8B9A87252A924407A6FDC2FC3EE4D40B3D04C9B57A92440EAE506C9C7EE4D40368B9F4A5DA92440CBC0838CCAEE4D4010E6105565A92440CEFD42DFCEEE4D40741DD87C67A924404B23B95FD1EE4D4048AEF2A767A924403007E628D3EE4D407FEACA3865A92440449B8D87D6EE4D401F747D6B62A924408756135BD9EE4D408E04E95D60A924404B87F227DBEE4D405E6668435CA92440F1795F29DDEE4D40470DCE9D51A9244087F2966EE1EE4D404FBA4CFD4BA924407C867BDDE3EE4D403BD0168146A92440492D8B4EE6EE4D403D748ACC42A9244086D82176E8EE4D40FE44F3C03FA92440845B1486EBEE4D40AA32EBB33DA924407CD68C82EEEE4D40E42D1A2A3DA92440F118A644F0EE4D40A7969CBC3DA92440E12A063DF2EE4D40E292DAFC3CA92440BABC172BF5EE4D40C6E9FCF63AA92440A6EBE8B7F6EE4D40641C21F634A924407ED09DDFF9EE4D40484DBD202BA92440422A6F60FDEE4D401BFF023422A92440170E4E0001EF4D40F0BC926D1AA924402741C99D03EF4D403F24679116A92440C1B5348905EF4D4083A68E3710A9244011F4D36B08EF4D406A8635FE0BA924400CF54E490BEF4D406BA05D9909A9244080CD8EE20DEF4D40CD7FFF8A08A924401BD8F8F110EF4D406C6E9FA507A92440086BEC2014EF4D4091FC7F370BA92440528A8C7318EF4D40019ED2710BA92440709CB1761AEF4D402FAE1BA709A92440E07E02761DEF4D402B8252AD09A92440A51B96841FEF4D40E73E58000BA924403A282AC620EF4D405327AFF80EA924407AD0A05322EF4D40D1F1A9CA18A924400CE13AE424EF4D401F938C2A28A92440FE67F8F528EF4D401E6A88F530A92440BBC1AA3F2BEF4D4013ECEB2035A924402CB0EBBA2CEF4D40985E1BA736A9244084E10AEB2DEF4D4014840DC234A924403364DB892FEF4D40B26FAD5B27A924402CE57F2A34EF4D4018E0E5BD20A92440D7FA51FA35EF4D40F7F26EE51EA924401FE3F30637EF4D406CF3BF2C1FA92440897DEDAC3AEF4D40FB2EBA931DA92440B40B951A3CEF4D4085A2C9191AA9244085047D3A3EEF4D40548C387C18A924408C63C76C40EF4D40FAEFD7C617A92440FCFC065143EF4D40E18C2F9B1AA9244079FE2FEF45EF4D40CFCE79361DA924401060BC0247EF4D4018304E0E22A9244091C859DF47EF4D40B04ECF2531A92440D8E7C0BA49EF4D40DB7D190941A92440DC0ABA704BEF4D4097D738014CA924408BA018B24CEF4D407FE64AB953A92440093D001F4EEF4D4019BA96935BA92440AA7885F14FEF4D405E4CD3705EA924402AF3912A51EF4D408845B30B5FA924401E9F279551EF4D409047C20C5FA9244078F7E89551EF4D40859947C862A92440E7FE757651EF4D406BEFA33C63A924405156A66751EF4D402043BE7763A9244061813D4951EF4D4095BCC6B763A924404CD9B10C51EF4D40FC4DCC4463A9244026AC8DA350EF4D4005ABEC5F62A92440F8BD273A50EF4D40A904978360A924405A1486C84FEF4D40487AAC245FA92440678301584FEF4D404A91B9245FA9244008FEBDD74EEF4D406B81A5685FA92440831CDF5E4EEF4D4020A3042F5FA92440B69BC2CF4DEF4D4060D279715FA92440A78473394DEF4D400CF8FCE160A924400CF659AA4CEF4D400FFBD3FF62A924407CA1EA314CEF4D4098B2D69C65A92440DBE227C24BEF4D40AA1047A868A9244077EB398E4BEF4D402F406AFF6AA9244050C415704BEF4D409B47E7696CA924408D2332614BEF4D40BB50D0E36CA92440423E30534BEF4D400887510D6EA92440345F162D4BEF4D4069B68FF36FA924403FD62EE24AEF4D40CBF6269A71A9244096BE60884AEF4D40D94C710673A924400914C9004AEF4D404E7A063F74A924400702666A49EF4D4036CE0EFA74A92440ED52C5BD48EF4D401F51FEFD74A92440C8922E0148EF4D409CB9F9CF74A924404DEA5B3D47EF4D40583F859974A924401B188D8846EF4D40D5F032EB73A92440A0F36ED345EF4D40139BFE0573A9244007BA373545EF4D40163B0C5A72A92440B8AB99A644EF4D404F23F92F71A92440826E7F2D44EF4D401E49D4916FA92440492454AD43EF4D4064958B836DA924408198763443EF4D4017EB921B6CA924408E4A05B442EF4D40D89073E56BA92440F7C6073442EF4D406C59EEE26CA92440638C0DBC41EF4D40416ECE016FA92440C796CE6141EF4D404BE2BA0972A92440B999C11E41EF4D4054D2905675A9244078A3490141EF4D4000DE7F9878A924409FEAE60141EF4D4067B1CB1A7CA9244010D4C9FA40EF4D402CBABB297FA924403FC7FAD540EF4D40FC19378781A92440CCED716C40EF4D408CA0D46D83A92440082318D63FEF4D40BC0C455285A92440DE09EF383FEF4D401800B04786A924406D6786843EEF4D409D302BC986A92440B1402DDE3DEF4D403E60ED7388A92440882C2B323DEF4D4013D8D3D28AA924405D7C609B3CEF4D401083E4E48DA924401A0B2D063CEF4D4002D8A50790A92440A2C89A6F3BEF4D40017F1DB291A924406F6779D93AEF4D409BDABEDD92A924407DC37C6F3AEF4D407C429D2293A9244032C45F4A3AEF4D4022431B1F93A9244023C7403B3AEF4D40AFEDF71094A92440B8AAFCF739EF4D40538C42B895A92440F2998D8739EF4D40232E881998A92440E4F7421739EF4D404784A4AF9AA92440C79F629E38EF4D40EB2043D19CA924407E6F311F38EF4D4087C835C49DA924403130DA7937EF4D4057CACD0F9EA924403B53E6BD36EF4D40D137B95F9DA92440A8B5380136EF4D40B27096BB9CA924403C3EA64435EF4D40235873D29BA924409640109834EF4D402FECC86E9AA92440EE958BDA33EF4D40490392D598A92440EA873D3C33EF4D401BD1932898A92440D7176F8F32EF4D40FEDF534297A92440427E07D331EF4D40C26DBDD696A92440F617AF3C31EF4D4050301B9C96A92440063814DA30EF4D408E225B6796A92440DC6B18AD30EF4D4095219A6596A9244051ED88A530EF4D409D20D96396A92440C86EF99D30EF4D40CBD2C26196A92440BEA0986130EF4D408FBAC0F495A924404D0B82F82FEF4D400960D4BA95A92440DA42467F2FEF4D4085C3EB8895A92440C0D4C6F72EEF4D402BEF430996A9244069C4CE682EEF4D40FDD3703B97A92440A6421ED32DEF4D40DA063CB697A92440B96D58432DEF4D408FEAF5BC97A92440CB9081AC2CEF4D40CEB3E84E97A9244068943A252CEF4D402F182A9F96A9244067455E9D2BEF4D40A672227795A9244097D9F2152BEF4D401DA675DB93A924401334B6862AEF4D40D46B4F0292A92440C44F62EF29EF4D402FE5BEDC90A92440E078E55829EF4D40FEF113F58FA92440EDAEBFC928EF4D407B8771D38EA9244085A3A14128EF4D40AC3286398DA92440437AF4B927EF4D40DC99C6D58BA92440214C013227EF4D401B282EE98AA924400B55FEC026EF4D40349AE9768AA92440EE42394126EF4D40ECF66F808AA92440D04B22D025EF4D407C3AAC448AA92440E784E88425EF4D402A04D9478AA924408732365F25EF4D40DB24A1898AA924402C053A2A25EF4D40C56DB0918AA9244020D8B29B24EF4D402E9015528AA9244096C4880C24EF4D4067666C1E8AA924406ED7797D23EF4D4003A7A8288AA92440C5F7C1F522EF4D406832B9E48AA9244081A8516722EF4D40E4C60E118CA924404A1CB4E621EF4D40C6D344BD8DA92440A238225821EF4D40337F295790A924409A2980D820EF4D405B01CFF292A924405C976D6020EF4D40EA8AD08995A92440E81F9DF01FEF4D40BB9BF26D97A9244085B154691FEF4D400456241299A924406F6E06E91EEF4D40784635829AA92440E7F6AC5A1EEF4D400419B2F29BA92440A14D93CB1DEF4D40DBF05CED9CA924402C1ED92D1DEF4D40B62B71689DA924401C9032881CEF4D407D84A2259EA92440C32261E21BEF4D40418143A69EA92440AD58883D1BEF4D40C524875E9FA9244012BFD9B51AEF4D407CC51F18A0A9244003D57A361AEF4D402BA60910A1A92440BBC5B2BD19EF4D4003F8733FA2A924404260F44C19EF4D40A0CEBAE6A3A92440434685DC18EF4D407A145B93A5A924403426334D18EF4D408368CD89A6A9244049DFFAB617EF4D404C681B44A7A92440F10AFB2017EF4D4054C9C136A8A92440E67D849116EF4D40B30709F6A8A9244060DC132816EF4D40A89AF2A8A9A92440CF4548BF15EF4D4056F6A523AAA9244022EE136515EF4D40E8A8F662AAA924404028293F15EF4D409F722E67AAA92440B23CA73715EF4D40BC1F2366AAA924406CD5761915EF4D408756C66BAAA924407718B3E414EF4D40E9F77832AAA92440BBE8678A14EF4D40E91529BEA9A924402C12F41814EF4D40341C5A9AA8A9244051C0068A13EF4D403E978AC2A6A92440BB9502FB12EF4D40DFE5C9D7A5A9244004A2FD5B12EF4D405B698E94A6A924405C63ECB611EF4D40668179C8A7A924407558CB2811EF4D400CC19671A9A92440BE385A8A10EF4D4030FA18DCAAA924408AF532FB0FEF4D404C53035CABA924409811FB6C0FEF4D405AD8E8B0AAA92440D0A8DCDC0EEF4D40177C70AAABA924402B8E83560EEF4D40858AEA01AEA92440B900EDEC0DEF4D407BA36289B1A924403828CCB10DEF4D406546BC46B5A9244089FD458C0DEF4D404D1FBD17B8A924408EB31F600DEF4D406C121F01BAA9244009AE85EF0CEF4D40B63DBB2DBBA92440ED5907590CEF4D409C75DA2ABCA924408AB63BAC0BEF4D40AF518730BCA92440E96F34F70AEF4D40901810FABBA92440719D65420AEF4D4060C8AC3FBCA924400F28648609EF4D404A6EDE37BDA92440B158BBF708EF4D404A02B5EEBDA9244095894E9D08EF4D400864C62FBEA92440B740F37E08EF4D40C351052EBEA9244021C2637708EF4D40AE7B575DBFA92440D3D3363C08EF4D4081E607B9C1A92440464E1ECB07EF4D401F0ECA10C4A9244049FBA64B07EF4D40936D1FF9C5A92440CF87DCBC06EF4D402D7C8FEFC6A924401D37A42606EF4D403E02BEF8C6A9244008EDBB8005EF4D40D09C89C7C6A924405E969BE204EF4D40216F3854C6A92440B321A64404EF4D406C71B1A8C5A92440CEED47B503EF4D40AC8A2A49C4A92440EDE6D22503EF4D40EA4CF596C3A92440CF0808AD02EF4D4077BE43D8C3A9244095FF192E02EF4D4069DCE068C3A92440A656839E01EF4D4066DD18D0C1A92440462875FF00EF4D4051379C3DBFA92440BD8BED8600EF4D403D35BCB5BCA92440AF63310600EF4D401AAD1A48BCA92440BE382A7EFFEE4D40805865E9BDA92440547EAD0DFFEE4D40FD2D6034C1A924409FB9F39DFEEE4D40CF9E0EF8C4A9244053D7082DFEEE4D4020D476CBC7A92440BD0D1FA7FDEE4D40389A897AC9A92440DE70BB08FDEE4D407EBA93FBC9A92440476D2263FCEE4D40AF1EF888C9A92440CF0F8CAEFBEE4D400C317958C9A9244001D0CAF9FAEE4D40214E81EAC8A924407F55F23CFAEE4D40099B6374C8A92440B9FA3C79F9EE4D40F01B5280C8A92440F28D62AEF8EE4D4088B82CC4C8A92440D097D1EAF7EE4D403D972CC4C9A924408553342EF7EE4D40CB8B6B31CBA92440BFDF1A7AF6EE4D40F20AB318CDA9244034FF1FCDF5EE4D40D879E637CFA92440F6936E27F5EE4D405E8DA65CD1A9244068EB8A82F4EE4D4070A8A433D4A92440CC922ED6F3EE4D4074A229CDD6A9244038FEBA21F3EE4D4070668B76D8A92440050F696DF2EE4D4006BF42FED8A924402AB23CB1F1EE4D4006A62E9AD7A92440F84C78F4F0EE4D4016C9A5A3D7A924409649AF38F0EE4D40ED0F5181DAA924405595BF75EFEE4D40B5AE9115DDA9244011809DAAEEEE4D409ED2323DDFA924404C33E8F5EDEE4D406CA6A7AEE0A924407DCA4C3AEDEE4D40FAB22AA5E1A92440D0EE826EECEE4D405F2BF328E2A9244015C4F7A3EBEE4D40B1FAB569E2A924404F9C87D0EAEE4D40B976182CE3A924400490B2F6E9EE4D40C7E0FA25E4A92440CE29E724E9EE4D400B7D7D1CE5A92440D94C1D59E8EE4D407FF04D1AE6A92440F9B1B095E7EE4D403E19C985E7A924403DB307DAE6EE4D4043B9016CE9A92440F65ADC0EE6EE4D40FFEDFE6BEAA924401D0C3F52E5EE4D408CC6D9EAEAA92440C3B4D6A5E4EE4D40269A9FB2EAA924408C6378E9E3EE4D4074A26DF4EAA924405AA23834E3EE4D4052CE58B4EBA924402EFE7469E2EE4D4068B5EE72ECA92440F7A96196E1EE4D40A0DF9A34EDA92440F2832DD3E0EE4D40A3CCA9AFEDA92440BFE6862DE0EE4D40769FBC42EDA9244030D6DE8EDFEE4D40A5604F0DEDA924405F6B40F8DEEE4D40EFFD20D6ECA92440ED81125ADEEE4D40A0A1BC56EDA924406AA839B5DDEE4D40DDB50C9CEDA92440E6E3180FDDEE4D40E35C7ADEEDA9244034BBC978DCEE4D40D36B03E3EDA92440648B23DBDBEE4D4083039472EDA924408C7D5C2DDBEE4D4053615E41EDA9244099263C8FDAEE4D40D43644D2ECA9244086C8C4E9D9EE4D406BED6861ECA92440C8EBBD3CD9EE4D40DC96FD77EBA92440FEB508A6D8EE4D4055ADB5CAEAA92440A1081B0FD8EE4D40EFC5AACFEAA9244092A7B470D7EE4D4038122424EAA92440BC7856E1D6EE4D40FDBE748EE8A9244080882752D6EE4D4043042DE1E7A92440BDDA39BBD5EE4D401B70865BE8A92440FE26342CD5EE4D406A185E41EAA9244093067BACD4EE4D40D6867414EDA9244010D4713CD4EE4D40C208ACE8EFA92440F18407B5D3EE4D40349038BEF2A9244090E3EC35D3EE4D401836E8CFF5A92440FFC799B6D2EE4D4084B93A66F8A924400C6CD827D2EE4D407658A1C4FAA92440919ACD91D1EE4D408C3D21AAFCA924405D1F43DDD0EE4D40633FD199FEA924406C494421D0EE4D40DB510A0700AA24409EBD2A6DCFEE4D40FCDC6A3701AA24406F93EACFCEEE4D40562F412E02AA2440DEFDF138CEEE4D40B062A36E02AA24404B0CF4B0CDEE4D4018459C7A02AA24409FA4CB30CDEE4D40DE309E3B02AA2440FE2C92C0CCEE4D409E53DACC01AA2440DD21EC4FCCEE4D4090176E9601AA2440D458CFE5CBEE4D40F2942B5E01AA2440EC93B4A9CBEE4D4050656A5C01AA24404B1525A2CBEE4D40A38F1F5D01AA2440D62B848BCBEE4D405F98142901AA2440BA7AE747CBEE4D4023CC0C7900AA244069F3EBD5CAEE4D40A7AFBC4000AA2440A9241F4FCAEE4D40656CF44A00AA2440553E67C7C9EE4D40E2BE524B00AA24405003F57BC9EE4D401F19C94D00AA24407B98E36CC9EE4D404D6F334F00AA24408DC5A13FC9EE4D40C2A5CC8201AA2440425061C7C8EE4D4025703CF402AA244064D6C50BC8EE4D40F689722604AA24406EA68340C7EE4D400E67851C05AA24401CEF7975C6EE4D40A12E755606AA244055CFD4B1C5EE4D40224737D206AA244069438DF5C4EE4D405B1F159007AA24407FD01A39C4EE4D402F2FF38908AA2440F95C4F67C3EE4D40AF6A44FE09AA2440B243E29BC2EE4D40C06F74F10AAA24408C26AAE0C1EE4D402E9AB6350BAA2440B5F5581CC1EE4D401A86A8BB0BAA2440DA0E9D58C0EE4D402E8C97750CAA244080CECB8DBFEE4D40EC38E8E90DAA244048B35EC2BEEE4D40EF0442930FAA244019A60C0EBEEE4D403F45280611AA2440B25CE16FBDEE4D401BE88F2F12AA2440383B15FFBCEE4D40688EE3E912AA24405F55C7B3BCEE4D402B94879E13AA2440AA248B52BCEE4D40587EDE9814AA24403086B1CABBEE4D408336BD9115AA24405DB06725BBEE4D400BBDDDD415AA2440FC987778BAEE4D40000786DA15AA2440DF4B70C3B9EE4D40C41D2C6D15AA2440126F8825B9EE4D40CA7190F914AA244052B8739DB8EE4D40A83A34AE15AA24400487373CB8EE4D40D78D050F18AA2440D9C25E17B8EE4D40A8A7EF1D1BAA244081A9FDBCB7EE4D40B303FA871CAA24401D65962EB7EE4D4097AB93191CAA244070207E72B6EE4D402EC485B01BAA244069D48297B5EE4D40B9292F031BAA24403423E3B5B4EE4D400244EDE119AA2440C00153E2B3EE4D40B12C20B219AA24404FD7F016B3EE4D4020A9FCEF19AA244030435253B2EE4D40D34FBCC519AA244036DCBD88B1EE4D409D3ABD5019AA24405F6BA7ADB0EE4D40B201496E18AA2440E42E7EEAAFEE4D40EE7AB03A18AA244076BFDD25AFEE4D40EDB3A40C18AA244081130B62AEEE4D40B5D6E01118AA244014F7C3ADADEE4D400E234A1918AA24400F284C00ADEE4D409B23692D17AA24405466A878ACEE4D40FC61DF4116AA244079F6D525ACEE4D408B66789215AA2440210CCBD2ABEE4D402DF2355A15AA24400148B096ABEE4D4017BA745815AA244056C9208FABEE4D400B8430E514AA24409264DD3BABEE4D40BE7BA18413AA2440B810388EAAEE4D4065F6CFD912AA2440D9FD38E8A9EE4D4035DF156113AA24402AC4CC2CA9EE4D40249A834515AA24406DCF115AA8EE4D40B05A88F516AA24400A652C8FA7EE4D4048B640D918AA24400B5812D3A6EE4D40F781F95A19AA2440B159D816A6EE4D40E59A93EC18AA24407C14C05AA5EE4D40BB9811BC18AA24404ED3FEA5A4EE4D409ECC5D4618AA2440D74B89E1A3EE4D40D2FE5D5518AA24401D068E26A3EE4D4000CAB80E19AA2440F0317E87A2EE4D4051120BC919AA24407C49303CA2EE4D407F9E88C519AA2440214C112DA2EE4D4021D5FEC719AA24400BE1FF1DA2EE4D407EB3AD7D1AAA24401816F4DAA1EE4D406AD5DE6E1BAA24408936BF78A1EE4D403C97D67A1BAA2440C0CC96F8A0EE4D402BFF73821BAA244015C8CF6AA0EE4D40C3DEEB9B1AAA2440C0FF48C49FEE4D40C6E73AFF18AA24409E28DC169FEE4D4056AC409E17AA24409907F7699EEE4D401BACD0FE15AA244011537CE19DEE4D40BC20CA1615AA2440B8E0C89D9DEE4D401EF063D514AA244020DF52879DEE4D40A75A629A14AA24408E3E2A709DEE4D40637112EE13AA2440C582FE2C9DEE4D40B55F1C8B12AA2440D6A41CD99CEE4D407C89C73A10AA2440835A6A609CEE4D405E7B6F810CAA24403F205AC99BEE4D4060264FCC08AA24406FF6C72A9BEE4D4006BFCA0306AA2440E916F57C9AEE4D40B873645A05AA2440C02EB4A999EE4D404C240AE105AA2440995C57CF98EE4D40BD53CA8B07AA24402A7BC3ED97EE4D40FCC5AC7209AA2440051FF70B97EE4D40B9DB48610BAA2440D1D2C73196EE4D40CC6B02920CAA24400E64154995EE4D401DF4F1460EAA244020250D6094EE4D400190B8EB0FAA244019AD6B7E93EE4D407608001412AA2440D84D15B392EE4D4091931FF014AA24407D27B5D291EE4D407AB2611117AA244061CA20E990EE4D40DC14BA3519AA24409B9A6B0F90EE4D40054293221BAA2440BEC6AC2D8FEE4D402A5966951CAA24403769CF448EEE4D401721958C1DAA2440488B64628DEE4D40E1428F871EAA2440BFF137798CEE4D406F3161CC1EAA2440D74A25898BEE4D401B5D42161FAA2440DC5410908AEE4D40D33311A01FAA24403E28019089EE4D4063EB97E51FAA24401C974D8988EE4D40663ED4EF1FAA2440B41E528187EE4D40C0D2C63520AA2440285CDE7986EE4D406460F6F920AA2440EE34077285EE4D408B1B7D6D22AA24400BEA887284EE4D406E1AAAA023AA24409506C57A83EE4D408142EBDB24AA24407EBE4D7F82EE4D40649B3F9725AA244030A03A8781EE4D40F867CD5526AA2440CD3727B480EE4D4019C3A09926AA2440113296F07FEE4D409D1CC66326AA2440D7F7B75A7FEE4D40D013DC3026AA2440862CBAFF7EEE4D400EE5AE2E26AA24400FDFEAF87EEE4D40EF14BBFE22AA2440D378082E7FEE4D40B7C3768B23AA24403A81FBA87EEE4D408685024324AA24407C5688777DEE4D40DE0F23C224AA2440DE6F1D757CEE4D40622767EC24AA2440BD1E35747BEE4D40DB0FC4FA23AA24405C99340C7BEE4D40B003210923AA2440CA1334A47AEE4D40D3F2E91722AA2440C75C733B7AEE4D4077E5D9C721AA244069CC90C979EE4D40824F7A0122AA2440E6E8954D79EE4D40EED1A93322AA2440B63B1DB478EE4D40CF1A42C822AA24404ADCCD4B78EE4D405C4AC14523AA244014C6159777EE4D40DC3E291124AA2440FB622DCD76EE4D4065CF948724AA2440024685AF75EE4D40CFD7A96B24AA24403A526ACB74EE4D409561AD4F24AA2440A91ABFDC73EE4D40024FB62624AA2440208EA68F72EE4D40CC908B3625AA2440DD4D61A171EE4D407DE104E026AA24408525EC8170EE4D402A51148428AA244072C0C9766FEE4D40C03E29E629AA2440189414C16EEE4D4065DE0AA02BAA2440F43FBD446EEE4D40D161680A2DAA24407A7905AB6DEE4D40051A85252EAA24403918505E6DEE4D40D161712937AA244021C528B76BEE4D403746FC3C38AA24406947B3F76AEE4D401E3309C738AA244095B328A26AEE4D40876CE2F438AA2440BFD8CD7A69EE4D4050801B3838AA24404B40D24968EE4D408DF7108637AA2440A16BE46567EE4D4014EFA50D37AA244006B1FB0566EE4D400B77F35436AA2440DAA35DB864EE4D40024EEE4136AA2440C178524F64EE4D40294AEDFF36AA2440CAEBBC2763EE4D40DB05E84C36AA2440C4F12E3062EE4D4032DE1DED35AA24406F31D18461EE4D405430A42036AA2440806986B360EE4D40A78F2BFF35AA24404DB19DCE5FEE4D400DCBC41737AA244098E325065FEE4D4010F58FFF36AA2440A4B7DA505EEE4D40F2DC2CB536AA2440853B08355EEE4D40');

We get this error

ERROR:  XX000: Spatial exception - geometry boundary touches interior of edge 128
LOCATION:  pg_error, lwgeom_pg.c:361

I also have the same problem when testing on

POSTGIS="3.5.0dev 3.4.0rc1-1080-g9eefe39f1" [EXTENSION] PGSQL="140" GEOS="3.12.1-CAPI-1.18.1" PROJ="9.4.0 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/Users/lop/Library/Application Support/proj DATABASE_PATH=/opt/homebrew/Cellar/proj/9.4.0/share/proj/proj.db" LIBXML="2.13.0" LIBJSON="0.17" (core procs from "3.4.2 c19ce56" need upgrade) TOPOLOGY (topology procs from "3.4.2 c19ce56" need upgrade)

Attachments (2)

before_topo_error.input.gz (18.4 KB ) - added by Lars Aksel Opsahl 8 months ago.
the input file to build toplogy before error
problem_geo.txt.gz (28.8 KB ) - added by Lars Aksel Opsahl 8 months ago.
select topology.TopoGeo_addLinestring('topo_nyxxx','010200…..

Download all attachments as: .zip

Change History (13)

by Lars Aksel Opsahl, 8 months ago

Attachment: before_topo_error.input.gz added

the input file to build toplogy before error

comment:1 by strk, 8 months ago

I'm afraid the WKB of the problematic geometry was truncated when put in the comment, could you upload a file instead ?

by Lars Aksel Opsahl, 8 months ago

Attachment: problem_geo.txt.gz added

select topology.TopoGeo_addLinestring('topo_nyxxx','010200…..

comment:2 by strk, 8 months ago

Simplified version of the test:

SELECT topology.CreateTopology ('topo_t5711');

SELECT topology.TopoGeo_addLinestring('topo_t5711', 'LINESTRING(
10.330696729253674 59.869691324470494,
10.33083177446384 59.86967354547033
)');

SELECT topology.TopoGeo_addLinestring('topo_t5711', 'LINESTRING(
10.33083177446384 59.86967354547033,
10.330803297725453 59.86967729449583,
10.330803407291219 59.86967760716573
)');

SELECT topology.TopoGeo_addLinestring('topo_t5711', 'LINESTRING(
10.330803266175977 59.86967720446249,
10.330803297725453 59.86967729449583
)');

comment:3 by strk, 8 months ago

This case is very similar to the one reported in #5699, that is: the second edge's first segment is almost coincident with one portion of the first edge, and then turns away from it. The turning vertex is very very close to the first edge but did not snap to it as we only snap to vertices, not segments, and because we try not to snap existing vertices.

When the third line is loaded, GEOS is not capable of representing a segment from the first edge to the central vertex of the second edge, but reports a single shared node between all edges. Then PostGIS Topology enters this intersection point to the Topology and only snaps the closest edge, happening to be the turning one (second edge). When the line is added it's found to cross the first edge.

The code in https://git.osgeo.org/gitea/postgis/postgis/pulls/196 seems to resolve the problem by also snapping and splitting the first edge, effectively merging the portions of those two first edges into one.

comment:4 by Sandro Santilli <strk@…>, 8 months ago

In 3d3421a8/git:

Have _lwt_CheckEdgeCrossing check for interior-boundary intersections

So far only interior-interior intersections have been checked by
the function, missing an important kind of invalid edge addition.

In stable-3.3 branch:
References #5699
References #5711
References #5722

comment:5 by Sandro Santilli <strk@…>, 8 months ago

In 2aafd239/git:

Have _lwt_CheckEdgeCrossing check for interior-boundary intersections

So far only interior-interior intersections have been checked by
the function, missing an important kind of invalid edge addition.

In stable-3.2 branch (3.2.8dev):
References #5699
References #5711
References #5722

in reply to:  2 ; comment:6 by Lars Aksel Opsahl, 8 months ago

Replying to strk:

Simplified version of the test:

SELECT topology.CreateTopology ('topo_t5711');

SELECT topology.TopoGeo_addLinestring('topo_t5711', 'LINESTRING(
10.330696729253674 59.869691324470494,
10.33083177446384 59.86967354547033
)');

SELECT topology.TopoGeo_addLinestring('topo_t5711', 'LINESTRING(
10.33083177446384 59.86967354547033,
10.330803297725453 59.86967729449583,
10.330803407291219 59.86967760716573
)');

SELECT topology.TopoGeo_addLinestring('topo_t5711', 'LINESTRING(
10.330803266175977 59.86967720446249,
10.330803297725453 59.86967729449583
)');

I this test supose to work on latest master 'POSTGIS="3.5.0dev 3.4.0rc1-1105-ga7ef07329" [EXTENSION] PGSQL="140" GEOS="3.12.1-CAPI-1.18.1" PROJ="9.3.0 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/tmp/proj DATABASE_PATH=/usr/local/share/proj/proj.db" LIBXML="2.9.13" LIBPROTOBUF="1.3.3" WAGYU="0.5.0 (Internal)" TOPOLOGY' ?

I still get this error

ERROR:  XX000: Spatial exception - geometry boundary touches interior of edge 1
LOCATION:  pg_error, lwgeom_pg.c:361

comment:7 by Sandro Santilli <strk@…>, 8 months ago

Resolution: fixed
Status: newclosed

In 63bb999/git:

Snap all edges to incoming node

Closes #5699
Closes #5711

Includes regress tests for both tickets.

in reply to:  6 comment:8 by strk, 8 months ago

Replying to Lars Aksel Opsahl:

I this test supose to work on latest master 'POSTGIS="3.5.0dev 3.4.0rc1-1105-ga7ef07329"

No, but try pulling and building again, shoudl be fixed by [63bb999efbc09425893158cb4bd70fd4047d08ec/git]

comment:9 by strk, 8 months ago

Keywords: robustness geos overlayng added

For the record: the test put in place for this ticket passed just fine with GEOS-3.8 (pre-OverlayNG) and without the change of snapping all edges.

comment:10 by Sandro Santilli <strk@…>, 8 months ago

In 50abdc26/git:

Have _lwt_CheckEdgeCrossing check for interior-boundary intersections

So far only interior-interior intersections have been checked by
the function, missing an important kind of invalid edge addition.

in stable-3.1 branch (3.1.12):

References #5699
References #5711
References #5722

in reply to:  10 comment:11 by strk, 8 months ago

Keywords: geos overlayng removed

Replying to strk:

For the record: the test put in place for this ticket passed just fine with GEOS-3.8 (pre-OverlayNG) and without the change of snapping all edges.

The reason for this is just because GEOS-3.8 is unable to detect the invalidity. Follow up discussion in https://trac.osgeo.org/postgis/ticket/5722#comment:18

Note: See TracTickets for help on using tickets.