- Notifications
You must be signed in to change notification settings - Fork126
Commit806e5f5
authored
SEA: Decouple Link Fetching (#632)
* test getting the list of allowed configurationsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce diffSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce diffSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* house constants in enums for readability and immutabilitySigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* add note on hybrid dispositionSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* [squashed from cloudfetch-sea] introduce external links + arrow functionalitySigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce responsibility of QueueSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce repetition in arrow tablee creationSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce redundant code in CloudFetchQueueSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* move chunk link progression to separate funcSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove redundant logSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* improve loggingSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove reliance on schema_bytes in SEASigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove redundant note on arrow_schema_bytesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* use more fetch methodsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove redundant schema_bytes from parent constructorSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* only call get_chunk_link with non null chunk indexSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* align SeaResultSet structure with ThriftResultSetSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remvoe _fill_result_buffer from SeaResultSetSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce code repetitionSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* align SeaResultSet with ext-links-seaSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove redundant methodsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* update unit testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove accidental venv changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* pre-fetch next chunk link on processing currentSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce nestingSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* line break after multi line pydocSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* re-introduce schema_bytes for better abstraction (likely temporary)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* add fetchmany_arrow and fetchall_arrowSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove accidental changes in sea backend testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove irrelevant changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary test changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary changes in thrift backend testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unimplemented methods testSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unimplemented method testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* modify example scripts to include fetch callsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* add GetChunksResponseSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove changes to sea testSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* re-introduce accidentally removed description extraction methodSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* fix type errors (ssl_options, CHUNK_PATH_WITH_ID..., etc.)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* access ssl_options through connectionSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* DEBUG levelSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove explicit multi chunk testSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* move cloud fetch queues back into utils.pySigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove excess docstringsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* move ThriftCloudFetchQueue above SeaCloudFetchQueueSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* fix sea connector testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* correct patch module path in cloud fetch queue testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unimplemented methods testSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* correct add_link docstringSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove invalid importSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* better align queries with JDBC implSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* line breaks after multi-line PRsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unused importsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* fix: introduce ExecuteResponse importSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unimplemented metadata methods test, un-necessary importsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* introduce unit tests for metadata methodsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove verbosity in ResultSetFilter docstringCo-authored-by: jayant <167047871+jayantsing-db@users.noreply.github.com>* remove un-necessary info in ResultSetFilter docstringSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove explicit type checking, string literals around forward annotationsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* house SQL commands in constantsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* convert complex types to string if not _use_arrow_native_complex_typesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* introduce unit tests for altered functionalitySigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* Revert "Merge branch 'fetch-json-inline' into ext-links-sea"This reverts commitdabba55, reversingchanges made todd7dc6a.Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce verbosity of ResultSetFilter docstringSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unused importsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* Revert "Merge branch 'fetch-json-inline' into ext-links-sea"This reverts commit3a999c0, reversingchanges made toa1f9b9c.* Revert "reduce verbosity of ResultSetFilter docstring"This reverts commita1f9b9c.* Reapply "Merge branch 'fetch-json-inline' into ext-links-sea"This reverts commit48ad7b3.* Revert "Merge branch 'fetch-json-inline' into ext-links-sea"This reverts commitdabba55, reversingchanges made todd7dc6a.* remove un-necessary filters changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary backend changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove constants changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove changes in filters testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unit test backend and JSON queue changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove changes in sea result set testingSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* Revert "remove changes in sea result set testing"This reverts commitd210ccd.* Revert "remove unit test backend and JSON queue changes"This reverts commitf6c5950.* Revert "remove changes in filters tests"This reverts commitf3f795a.* Revert "remove constants changes"This reverts commit802d045.* Revert "remove un-necessary backend changes"This reverts commit20822e4.* Revert "remove un-necessary filters changes"This reverts commit5e75fb5.* remove unused importsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* working versionSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* adopy _wait_until_command_doneSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* introduce metadata commandsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* use new backend structureSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* constrain backend diffSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove changes to filtersSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* make _parse methods in models internalSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce changes in unit testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* run small queries with SEA during integration testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* run some tests for seaSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* allow empty schema bytes for alignment with SEASigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* pass is_vl_op to Sea backend ExecuteResponseSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove catalog requirement in get_tablesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* move filters.py to SEA utilsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* ensure SeaResultSetSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* prevent circular importsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unused importsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove cast, throw error if not SeaResultSetSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* pass param as TSparkParameterValueSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove failing test (temp)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove SeaResultSet type assertionSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* change errors to align with spec, instead of arbitrary ValueErrorSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* make SEA backend methods return SeaResultSetSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* use spec-aligned Exceptions in SEA backendSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove defensive row type checkSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* raise ProgrammingError for invalid idSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* make is_volume_operation strict boolSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove complex types codeSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* Revert "remove complex types code"This reverts commit138359d.* introduce type conversion for primitive types for JSON + INLINESigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove SEA running on metadata queries (known failuresSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary docstringsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* align expected types with databricks sdkSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* link rest api reference to validate typesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove test_catalogs_returns_arrow_table testmetadata commands not expected to passSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* fix fetchall_arrow and fetchmany_arrowSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove thrift aligned test_cancel_during_execute from SEA testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary changes in example scriptsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary chagnes in example scriptsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* _convert_json_table -> _create_json_tableSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove accidentally removed testSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove new unit tests (to be re-added based on new arch)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove changes in sea_result_set functionality (to be re-added)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* introduce more integration testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove SEA tests in parameterized queriesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove partial parameter fix changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary timestamp tests(pass with minor disparity)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* slightly stronger typing of _convert_json_typesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* stronger typing of json utility func sSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* stronger typing of fetch*_jsonSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unused helper methods in SqlTypeSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* line breaks after multi line pydocs, remove excess logsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* line breaks after multi line pydocs, reduce diff of redundant changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce diff of redundant changesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* mandate ResultData in SeaResultSet constructorSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove complex type conversionSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* correct fetch*_arrowSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* recover old sea testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* move queue and result set into SEA specific dirSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* pass ssl_options into CloudFetchQueueSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce diffSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove redundant conversion.pySigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* fix type issuesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* ValueError not ProgrammingErrorSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* reduce diffSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* introduce SEA cloudfetch e2e testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* allow empty cloudfetch resultSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* add unit tests for CloudFetchQueue and SeaResultSetSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* skip pyarrow dependent testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* simplify download process: no pre-fetchingSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* correct class name in logsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* align with old implSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* align next_n_rows with prev impleSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* align remaining_rows with prev implSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary Optional paramsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary changes in thrift field if testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove unused importsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* init hybrid* run large queriesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* hybrid dispositionSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-ncessary logSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* formatting (black)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove redundant testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* multi frame decompression of lz4Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* ensure no compression (temp)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* introduce separate link fetcherSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* log time to create tableSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* add chunk index to table creation time logSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove custom multi-frame decompressor for lz4Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove excess logs* remove redundant tests (temp)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* add link to download manager before notifying consumerSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* move link fetching immediately before table creation so link expiry is not an issueSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* resolve merge artifactsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove redundant methodsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* formatting (black)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* introduce callback to handle link expirySigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* fix typesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* fix param type in unit testsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* formatting + minor type fixesSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* Revert "introduce callback to handle link expiry"This reverts commitbd51b1c.* remove unused callback (to be introduced later)Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* correct param extractionSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove common constructor for databricks client abcSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* make SEA Http Client instance a private memberSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* make GetChunksResponse model more robustSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* add link to doc of GetChunk response modelSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* pass result_data instead of "initial links" into SeaCloudFetchQueueSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* move download_manager init into parent CloudFetchQueueSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* raise ServerOperationError for no 0th chunkSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* unused iportsSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* return None in case of empty resposeSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* ensure table is empty on no initial link sSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* account for total chunk countSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* iterate by chunk index instead of linkSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* make LinkFetcher convert link staticSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* add helper for link addition, check for edge case to prevent inf waitSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* add unit tests for LinkFetcherSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary download manager checkSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove un-necessary string literals around param typeSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* remove duplicate download_manager initSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* account for empty response in LinkFetcher initSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* make get_chunk_link return mandatory ExternalLinkSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* set shutdown_event instead of breaking on completion so get_chunk_link is informedSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* docstrings, logging, pydocSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* use total_chunk_cound > 0Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* clarify that link has already been submitted on getting row_offsetSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* return None for out of rangeSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>* default link_fetcher to NoneSigned-off-by: varun-edachali-dbx <varun.edachali@databricks.com>---------Signed-off-by: varun-edachali-dbx <varun.edachali@databricks.com>1 parent8fbca9d commit806e5f5
File tree
2 files changed
+371
-89
lines changed- src/databricks/sql/backend/sea
- tests/unit
2 files changed
+371
-89
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
121 | 122 | | |
122 | 123 | | |
123 | 124 | | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
124 | 298 | | |
125 | 299 | | |
126 | 300 | | |
| |||
158 | 332 | | |
159 | 333 | | |
160 | 334 | | |
161 | | - | |
162 | | - | |
163 | | - | |
164 | | - | |
165 | 335 | | |
166 | 336 | | |
167 | 337 | | |
168 | 338 | | |
169 | 339 | | |
170 | 340 | | |
171 | 341 | | |
172 | | - | |
173 | 342 | | |
174 | 343 | | |
175 | 344 | | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | 345 | | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
185 | 356 | | |
186 | | - | |
187 | | - | |
188 | | - | |
189 | | - | |
190 | | - | |
191 | | - | |
192 | | - | |
193 | | - | |
194 | | - | |
195 | | - | |
196 | | - | |
197 | | - | |
| 357 | + | |
| 358 | + | |
198 | 359 | | |
199 | | - | |
200 | | - | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
201 | 363 | | |
202 | 364 | | |
203 | | - | |
204 | | - | |
205 | | - | |
206 | | - | |
207 | | - | |
208 | | - | |
209 | | - | |
210 | | - | |
211 | | - | |
212 | | - | |
213 | | - | |
214 | | - | |
215 | | - | |
216 | | - | |
217 | | - | |
218 | | - | |
219 | | - | |
220 | | - | |
221 | | - | |
222 | | - | |
223 | | - | |
224 | | - | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
225 | 368 | | |
226 | | - | |
| 369 | + | |
| 370 | + | |
227 | 371 | | |
228 | 372 | | |
| 373 | + | |
| 374 | + | |
229 | 375 | | |
230 | 376 | | |
231 | | - | |
232 | | - | |
233 | | - | |
234 | | - | |
235 | | - | |
236 | | - | |
237 | | - | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
0 commit comments
Comments
(0)