[arvados] updated: 2.7.0-5313-g4ad6191d53
git repository hosting
git at public.arvados.org
Mon Nov 6 20:28:29 UTC 2023
Summary of changes:
.licenseignore | 21 +
AUTHORS | 1 +
apps/workbench/Gemfile | 7 +-
apps/workbench/Gemfile.lock | 60 +-
.../app/assets/stylesheets/application.css.scss | 11 +
.../app/controllers/application_controller.rb | 6 +-
.../app/controllers/collections_controller.rb | 6 +-
.../controllers/container_requests_controller.rb | 2 +-
.../app/controllers/projects_controller.rb | 6 +-
.../app/controllers/work_units_controller.rb | 2 +-
apps/workbench/app/models/arvados_base.rb | 4 +-
apps/workbench/app/views/layouts/body.html.erb | 28 +-
.../app/views/workflows/_show_definition.html.erb | 2 +-
.../workbench/test/integration/ajax_errors_test.rb | 2 +-
.../test/integration/collection_upload_test.rb | 6 +-
apps/workbench/test/integration/search_box_test.rb | 2 +-
.../collection_unit_test.rb | 2 +-
build/package-build-dockerfiles/rocky8/Dockerfile | 2 +-
build/package-test-dockerfiles/rocky8/Dockerfile | 2 +-
build/run-build-packages-one-target.sh | 39 +-
build/run-build-test-packages-one-target.sh | 11 +-
build/run-library.sh | 17 +-
build/run-tests.sh | 38 +-
cmd/arvados-client/container_gateway.go | 30 +-
cmd/arvados-client/container_gateway_test.go | 128 +-
doc/README.textile | 2 +-
doc/Rakefile | 4 +-
doc/_config.yml | 22 +-
.../_multi_host_install_custom_certificates.liquid | 11 +-
doc/_includes/_ssl_config_multi.liquid | 33 +
doc/admin/diagnostics.html.textile.liquid | 16 +
.../logs-table-management.html.textile.liquid | 12 +-
...restricting-upload-download.html.textile.liquid | 4 +-
doc/admin/scoped-tokens.html.textile.liquid | 2 +
doc/admin/upgrading.html.textile.liquid | 43 +-
doc/admin/user-management-cli.html.textile.liquid | 2 +-
doc/admin/user-management.html.textile.liquid | 43 +-
doc/api/crunch-scripts.html.textile.liquid | 4 +-
doc/api/index.html.textile.liquid | 8 +-
.../api_client_authorizations.html.textile.liquid | 11 +-
doc/api/methods/collections.html.textile.liquid | 2 +-
doc/api/methods/groups.html.textile.liquid | 4 +-
doc/api/methods/humans.html.textile.liquid | 4 +-
doc/api/methods/job_tasks.html.textile.liquid | 4 +-
doc/api/methods/jobs.html.textile.liquid | 4 +-
doc/api/methods/keep_disks.html.textile.liquid | 6 +-
doc/api/methods/nodes.html.textile.liquid | 4 +
.../methods/pipeline_instances.html.textile.liquid | 4 +-
.../methods/pipeline_templates.html.textile.liquid | 4 +-
doc/api/methods/repositories.html.textile.liquid | 4 +
doc/api/methods/specimens.html.textile.liquid | 4 +-
doc/api/methods/traits.html.textile.liquid | 4 +-
doc/api/tokens.html.textile.liquid | 4 +-
doc/images/switch-to-wb1.png | Bin 35755 -> 0 bytes
doc/images/switch-to-wb2.png | Bin 43350 -> 0 bytes
doc/images/wgs-tutorial/image1.png | Bin 223266 -> 79811 bytes
doc/images/wgs-tutorial/image4.png | Bin 78882 -> 156330 bytes
doc/images/wgs-tutorial/image5.png | Bin 315990 -> 217834 bytes
doc/images/wgs-tutorial/image6.png | Bin 287176 -> 30881 bytes
doc/images/wgs-tutorial/image7.png | Bin 0 -> 103920 bytes
doc/images/wgs-tutorial/image8.png | Bin 0 -> 80845 bytes
.../install-dispatch-cloud.html.textile.liquid | 2 +-
.../install-workbench2-app.html.textile.liquid | 2 +-
doc/install/salt-multi-host.html.textile.liquid | 80 +-
doc/install/workbench.html.textile.liquid | 6 +
doc/pysdk_pdoc.py | 51 +
doc/user/topics/arv-copy.html.textile.liquid | 32 +-
.../topics/workbench-migration.html.textile.liquid | 8 -
...l-keep-collection-lifecycle.html.textile.liquid | 8 +-
.../tutorials/wgs-tutorial.html.textile.liquid | 73 +-
lib/boot/helpers.go | 2 +-
lib/cloud/ec2/ec2.go | 29 +-
lib/cloud/ec2/ec2_test.go | 9 +-
lib/cloud/interfaces.go | 14 +
lib/config/config.default.yml | 17 +-
lib/config/export.go | 1 +
lib/controller/federation_test.go | 2 +-
lib/controller/handler.go | 11 +-
lib/controller/localdb/container_test.go | 3 +
lib/controller/localdb/login_oidc.go | 33 +-
lib/controller/rpc/conn_test.go | 36 +-
lib/crunchrun/crunchrun.go | 23 +-
lib/crunchrun/crunchrun_test.go | 10 +-
lib/diagnostics/cmd.go | 147 +-
lib/dispatchcloud/dispatcher_test.go | 18 +-
lib/dispatchcloud/scheduler/interfaces.go | 1 +
lib/dispatchcloud/scheduler/run_queue.go | 32 +-
lib/dispatchcloud/scheduler/run_queue_test.go | 115 +
lib/dispatchcloud/worker/pool.go | 42 +-
lib/install/deps.go | 22 +-
lib/service/cmd.go | 23 +-
lib/service/cmd_test.go | 71 +-
sdk/cli/Gemfile | 1 -
sdk/cli/arvados-cli.gemspec | 13 +-
sdk/cwl/arvados_cwl/__init__.py | 14 +-
sdk/cwl/arvados_cwl/arv-cwl-schema-v1.2.yml | 19 +
sdk/cwl/arvados_cwl/arvcontainer.py | 12 +-
sdk/cwl/arvados_cwl/arvtool.py | 9 +-
sdk/cwl/arvados_cwl/arvworkflow.py | 104 +-
sdk/cwl/arvados_cwl/context.py | 3 +
sdk/cwl/arvados_cwl/executor.py | 24 +-
sdk/cwl/arvados_cwl/pathmapper.py | 3 +-
sdk/cwl/arvados_cwl/runner.py | 43 +-
sdk/cwl/setup.py | 5 +-
sdk/cwl/tests/arvados-tests.yml | 6 +
sdk/cwl/tests/test_container.py | 6 +-
sdk/cwl/tests/test_submit.py | 119 +-
sdk/cwl/tests/tool/submit_tool_map.cwl | 24 +
sdk/cwl/tests/wf/expect_upload_wrapper_map.cwl | 88 +
sdk/cwl/tests/wf/runseparate-wf.cwl | 68 +
sdk/cwl/tests/wf/submit_wf_map.cwl | 25 +
sdk/go/arvados/config.go | 14 +-
sdk/go/arvados/keep_service.go | 3 +-
sdk/go/arvados/tls_certs.go | 23 +
sdk/go/arvados/tls_certs_test.go | 32 +
sdk/go/arvados/tls_certs_test_showenv.go | 22 +
sdk/go/arvadosclient/arvadosclient.go | 36 +-
sdk/python/arvados-v1-discovery.json | 3824 ++++++++++----------
sdk/python/arvados/__init__.py | 9 +
sdk/python/arvados/_pycurlhelper.py | 1 +
sdk/python/arvados/api.py | 223 +-
sdk/python/arvados/collection.py | 2223 +++++++-----
sdk/python/arvados/commands/arv_copy.py | 288 +-
sdk/python/arvados/commands/federation_migrate.py | 15 +-
sdk/python/arvados/commands/get.py | 3 +-
sdk/python/arvados/commands/keepdocker.py | 15 +-
sdk/python/arvados/commands/migrate19.py | 2 +
sdk/python/arvados/crunch.py | 2 +
sdk/python/arvados/http_to_keep.py | 62 +-
sdk/python/arvados/retry.py | 58 +-
sdk/python/arvados/safeapi.py | 4 +-
sdk/python/arvados/stream.py | 2 +
sdk/python/arvados/util.py | 111 +-
sdk/python/discovery2pydoc.py | 20 +-
sdk/python/setup.py | 15 +-
sdk/python/tests/test_http.py | 35 +-
sdk/python/tests/test_util.py | 43 +-
sdk/ruby-google-api-client/.gitignore | 20 +
sdk/ruby-google-api-client/.rspec | 2 +
sdk/ruby-google-api-client/.travis.yml | 23 +
sdk/ruby-google-api-client/.yardopts | 7 +
sdk/ruby-google-api-client/CHANGELOG.md | 178 +
sdk/ruby-google-api-client/CONTRIBUTING.md | 32 +
sdk/ruby-google-api-client/Gemfile | 9 +
sdk/ruby-google-api-client/LICENSE | 202 ++
sdk/ruby-google-api-client/README.md | 7 +
sdk/ruby-google-api-client/Rakefile | 41 +
.../arvados-google-api-client.gemspec | 46 +
sdk/ruby-google-api-client/lib/cacerts.pem | 2183 +++++++++++
.../lib/compat/multi_json.rb | 19 +
.../lib/google/api_client.rb | 756 ++++
.../api_client/auth/compute_service_account.rb | 28 +
.../lib/google/api_client/auth/file_storage.rb | 59 +
.../lib/google/api_client/auth/installed_app.rb | 126 +
.../lib/google/api_client/auth/jwt_asserter.rb | 126 +
.../lib/google/api_client/auth/key_utils.rb | 93 +
.../lib/google/api_client/auth/pkcs12.rb | 41 +
.../lib/google/api_client/auth/storage.rb | 102 +
.../google/api_client/auth/storages/file_store.rb | 58 +
.../google/api_client/auth/storages/redis_store.rb | 54 +
.../lib/google/api_client/batch.rb | 326 ++
.../lib/google/api_client/charset.rb | 33 +
.../lib/google/api_client/client_secrets.rb | 179 +
.../lib/google/api_client/discovery.rb | 19 +
.../lib/google/api_client/discovery/api.rb | 310 ++
.../lib/google/api_client/discovery/media.rb | 77 +
.../lib/google/api_client/discovery/method.rb | 363 ++
.../lib/google/api_client/discovery/resource.rb | 156 +
.../lib/google/api_client/discovery/schema.rb | 117 +
.../lib/google/api_client/environment.rb | 42 +
.../lib/google/api_client/errors.rb | 65 +
.../lib/google/api_client/logging.rb | 32 +
.../lib/google/api_client/media.rb | 260 ++
.../lib/google/api_client/railtie.rb | 18 +
.../lib/google/api_client/reference.rb | 27 +
.../lib/google/api_client/request.rb | 318 ++
.../lib/google/api_client/result.rb | 255 ++
.../lib/google/api_client/service.rb | 233 ++
.../lib/google/api_client/service/batch.rb | 110 +
.../lib/google/api_client/service/request.rb | 144 +
.../lib/google/api_client/service/resource.rb | 40 +
.../lib/google/api_client/service/result.rb | 162 +
.../google/api_client/service/simple_file_store.rb | 151 +
.../google/api_client/service/stub_generator.rb | 61 +
.../lib/google/api_client/service_account.rb | 21 +
.../lib/google/api_client/version.rb | 26 +
sdk/ruby-google-api-client/rakelib/gem.rake | 34 +
sdk/ruby-google-api-client/rakelib/git.rake | 45 +
sdk/ruby-google-api-client/rakelib/metrics.rake | 22 +
sdk/ruby-google-api-client/rakelib/spec.rake | 22 +
sdk/ruby-google-api-client/rakelib/wiki.rake | 82 +
sdk/ruby-google-api-client/rakelib/yard.rake | 29 +
sdk/ruby-google-api-client/script/package | 8 +
sdk/ruby-google-api-client/script/release | 14 +
.../fixtures/files/auth_stored_credentials.json | 8 +
.../spec/fixtures/files/client_secrets.json | 1 +
.../spec/fixtures/files/privatekey.p12 | Bin 0 -> 1732 bytes
.../spec/fixtures/files/sample.txt | 33 +
.../spec/fixtures/files/secret.pem | 19 +
.../spec/fixtures/files/zoo.json | 584 +++
.../spec/google/api_client/auth/storage_spec.rb | 122 +
.../api_client/auth/storages/file_store_spec.rb | 40 +
.../api_client/auth/storages/redis_store_spec.rb | 70 +
.../spec/google/api_client/batch_spec.rb | 248 ++
.../spec/google/api_client/client_secrets_spec.rb | 53 +
.../spec/google/api_client/discovery_spec.rb | 708 ++++
.../spec/google/api_client/gzip_spec.rb | 98 +
.../spec/google/api_client/media_spec.rb | 178 +
.../spec/google/api_client/request_spec.rb | 29 +
.../spec/google/api_client/result_spec.rb | 207 ++
.../spec/google/api_client/service_account_spec.rb | 169 +
.../spec/google/api_client/service_spec.rb | 618 ++++
.../google/api_client/simple_file_store_spec.rb | 133 +
.../spec/google/api_client_spec.rb | 352 ++
sdk/ruby-google-api-client/spec/spec_helper.rb | 66 +
sdk/ruby-google-api-client/yard/bin/yard-wiki | 9 +
.../yard/lib/yard-google-code.rb | 12 +
.../yard/lib/yard/cli/wiki.rb | 44 +
.../yard/lib/yard/rake/wikidoc_task.rb | 27 +
.../yard/lib/yard/serializers/wiki_serializer.rb | 68 +
.../yard/lib/yard/templates/helpers/wiki_helper.rb | 502 +++
.../yard/templates/default/class/setup.rb | 43 +
.../yard/templates/default/docstring/setup.rb | 54 +
.../yard/templates/default/method/setup.rb | 8 +
.../yard/templates/default/method_details/setup.rb | 8 +
.../yard/templates/default/module/setup.rb | 133 +
.../yard/templates/default/tags/setup.rb | 55 +
sdk/ruby/Gemfile | 5 +-
sdk/ruby/arvados.gemspec | 13 +-
sdk/ruby/lib/arvados.rb | 10 +-
sdk/ruby/test/sdk_fixtures.rb | 2 +-
sdk/ruby/test/test_keep_manifest.rb | 2 -
sdk/ruby/test/test_request_id.rb | 4 +-
services/api/Gemfile | 30 +-
services/api/Gemfile.lock | 343 +-
services/api/app/assets/config/manifest.js | 7 +
.../api/app/controllers/application_controller.rb | 5 +-
.../controllers/arvados/v1/groups_controller.rb | 2 +-
.../app/controllers/arvados/v1/nodes_controller.rb | 2 +-
.../controllers/arvados/v1/schema_controller.rb | 2 +-
.../app/controllers/arvados/v1/users_controller.rb | 19 +-
.../api/app/controllers/database_controller.rb | 8 +-
services/api/app/controllers/static_controller.rb | 2 +-
.../app/controllers/user_sessions_controller.rb | 114 +-
services/api/app/middlewares/arvados_api_token.rb | 49 +-
.../api/app/models/api_client_authorization.rb | 219 +-
services/api/app/models/arvados_model.rb | 9 +-
services/api/app/models/authorized_key.rb | 6 +-
services/api/app/models/container.rb | 21 +-
services/api/app/models/container_request.rb | 28 +-
services/api/app/models/group.rb | 101 +-
services/api/app/models/job.rb | 4 +-
services/api/app/models/keep_disk.rb | 2 +-
services/api/app/models/node.rb | 11 +-
services/api/app/models/pipeline_instance.rb | 5 +-
services/api/app/models/user.rb | 16 +-
services/api/app/models/virtual_machine.rb | 4 +-
services/api/app/models/workflow.rb | 4 +-
services/api/bin/rails | 11 +-
services/api/bin/rake | 9 +-
services/api/bin/setup | 31 +-
services/api/config.ru | 10 +-
services/api/config/application.rb | 74 +-
services/api/config/arvados_config.rb | 6 +-
services/api/config/boot.rb | 9 +-
services/api/config/environment.rb | 10 +-
.../application_controller_renderer.rb | 4 -
services/api/config/initializers/assets.rb | 13 +-
services/api/config/initializers/authorization.rb | 2 +
.../api/config/initializers/backtrace_silencers.rb | 11 +-
.../initializers/clear_empty_content_type.rb | 26 +
.../config/initializers/content_security_policy.rb | 46 +-
.../api/config/initializers/cookies_serializer.rb | 6 +-
services/api/config/initializers/custom_types.rb | 2 +
services/api/config/initializers/eventbus.rb | 31 -
.../initializers/filter_parameter_logging.rb | 12 +-
services/api/config/initializers/inflections.rb | 18 +-
services/api/config/initializers/mime_types.rb | 5 -
.../config/initializers/new_framework_defaults.rb | 26 -
.../initializers/new_framework_defaults_5_2.rb | 42 -
.../api/config/initializers/permissions_policy.rb | 11 +
services/api/config/initializers/reload_config.rb | 2 +-
.../config/initializers/request_id_middleware.rb | 4 +-
.../api/config/initializers/wrap_parameters.rb | 14 +-
services/api/config/locales/en.yml | 34 +-
.../20130118002239_rename_metadata_attributes.rb | 4 +-
...203180223_set_group_class_on_anonymous_group.rb | 4 +-
...tion_portable_data_hash_with_hinted_manifest.rb | 2 +-
.../20180917205609_recompute_file_names_index.rb | 2 +-
.../migrate/20220726034131_write_via_all_users.rb | 10 +-
.../20221219165512_dedup_permission_links.rb | 4 +-
...d_btree_name_index_to_collections_and_groups.rb | 24 +
.../20231013000000_compute_permission_index.rb | 27 +
services/api/db/structure.sql | 83 +-
services/api/lib/can_be_an_owner.rb | 8 +-
services/api/lib/config_loader.rb | 12 +-
services/api/lib/db_current_time.rb | 4 +-
services/api/lib/enable_jobs_api.rb | 2 +-
services/api/lib/has_uuid.rb | 8 +-
services/api/lib/migrate_yaml_to_json.rb | 8 +-
services/api/lib/serializers.rb | 2 +-
.../api/lib/tasks/manage_long_lived_tokens.rake | 2 +-
services/api/lib/trashable.rb | 6 +-
services/api/lib/update_permissions.rb | 67 +-
services/api/lib/update_priorities.rb | 4 +-
services/api/script/arvados-git-sync.rb | 4 +-
.../api/script/migrate-gitolite-to-uuid-storage.rb | 4 +-
services/api/test/fixtures/collections.yml | 8 +-
services/api/test/fixtures/container_requests.yml | 60 +-
services/api/test/fixtures/containers.yml | 40 +-
services/api/test/fixtures/job_tasks.yml | 4 +-
services/api/test/fixtures/jobs.yml | 112 +-
services/api/test/fixtures/keep_disks.yml | 18 +-
services/api/test/fixtures/logs.yml | 70 +-
services/api/test/fixtures/nodes.yml | 16 +-
services/api/test/fixtures/pipeline_instances.yml | 76 +-
services/api/test/fixtures/workflows.yml | 6 +-
.../api_client_authorizations_controller_test.rb | 13 +
.../arvados/v1/collections_controller_test.rb | 14 +
.../v1/container_requests_controller_test.rb | 4 +-
.../arvados/v1/groups_controller_test.rb | 2 +-
.../arvados/v1/management_controller_test.rb | 3 +-
.../functional/arvados/v1/users_controller_test.rb | 16 +-
.../functional/user_sessions_controller_test.rb | 110 +-
.../api_client_authorizations_api_test.rb | 130 +-
.../api_client_authorizations_scopes_test.rb | 51 +-
services/api/test/integration/cross_origin_test.rb | 4 +-
.../test/integration/discovery_document_test.rb | 12 +-
services/api/test/integration/http_quirks_test.rb | 16 +
services/api/test/integration/remote_user_test.rb | 88 +-
.../api/test/integration/user_sessions_test.rb | 2 +-
services/api/test/test_helper.rb | 14 +-
services/api/test/unit/arvados_model_test.rb | 10 +-
services/api/test/unit/collection_test.rb | 106 +-
services/api/test/unit/container_request_test.rb | 170 +-
services/api/test/unit/container_test.rb | 238 +-
.../api/test/unit/create_superuser_token_test.rb | 2 +-
services/api/test/unit/group_test.rb | 58 +-
services/api/test/unit/link_test.rb | 6 +-
services/api/test/unit/log_test.rb | 2 +-
services/api/test/unit/owner_test.rb | 8 +-
services/api/test/unit/permission_test.rb | 18 +-
services/api/test/unit/repository_test.rb | 2 +-
services/api/test/unit/user_test.rb | 4 +-
services/api/test/unit/workflow_test.rb | 18 +-
services/keep-balance/balance.go | 18 +-
services/keep-balance/balance_run_test.go | 8 +
services/keep-balance/balance_test.go | 66 +-
services/keep-web/handler.go | 38 +-
services/keep-web/handler_test.go | 56 +-
services/keepstore/azure_blob_volume.go | 7 +-
services/keepstore/command.go | 8 +-
services/keepstore/handlers.go | 6 +-
services/keepstore/keepstore.go | 4 +-
services/keepstore/s3aws_volume.go | 6 +-
services/keepstore/trash_worker.go | 6 +-
services/keepstore/unix_volume.go | 7 +-
services/keepstore/volume.go | 10 +-
services/login-sync/Gemfile | 4 +-
services/login-sync/arvados-login-sync.gemspec | 7 +-
services/workbench2/Makefile | 7 +-
.../cypress/fixtures/workflow_directory_array.yaml | 20 +
.../cypress/integration/banner-tooltip.spec.js | 2 +-
.../cypress/integration/collection.spec.js | 1710 +++++----
.../cypress/integration/create-workflow.spec.js | 79 +-
.../cypress/integration/page-not-found.spec.js | 5 +-
.../workbench2/cypress/integration/process.spec.js | 1751 +++++----
.../workbench2/cypress/integration/project.spec.js | 638 ++--
.../workbench2/cypress/integration/search.spec.js | 346 +-
.../integration/virtual-machine-admin.spec.js | 316 +-
services/workbench2/cypress/support/commands.js | 835 +++--
services/workbench2/package.json | 12 +-
services/workbench2/src/common/html-sanitize.ts | 51 +
.../collection-panel-files.tsx | 974 ++---
.../copy-to-clipboard-snackbar.tsx | 80 +-
.../data-explorer/data-explorer.test.tsx | 111 +-
.../src/components/data-explorer/data-explorer.tsx | 364 +-
.../data-table-filters-popover.tsx | 147 +-
.../data-table-filters/data-table-filters-tree.tsx | 6 +-
.../data-table-multiselect-popover.tsx | 149 +
.../src/components/data-table/data-table.test.tsx | 257 +-
.../src/components/data-table/data-table.tsx | 429 ++-
.../src/components/dropdown-menu/dropdown-menu.tsx | 22 +-
services/workbench2/src/components/icon/icon.tsx | 406 ++-
.../multiselect-toolbar/MultiselectToolbar.tsx | 213 ++
.../ms-kind-action-differentiator.ts | 21 +
.../ms-toolbar-action-filters.ts | 35 +
.../src/components/select-field/select-field.tsx | 85 +-
services/workbench2/src/index.tsx | 285 +-
services/workbench2/src/models/tree.test.ts | 31 +
services/workbench2/src/models/tree.ts | 34 +-
.../collection-service-files-response.ts | 2 +-
.../collection-service/collection-service.ts | 144 +-
.../common-service/trashable-resource-service.ts | 20 +-
.../all-processes-panel-middleware-service.ts | 12 +-
.../src/store/breadcrumbs/breadcrumbs-actions.ts | 179 +-
.../collection-panel/collection-panel-action.ts | 12 +-
.../store/collections/collection-copy-actions.ts | 86 +-
.../store/collections/collection-move-actions.ts | 45 +-
.../collections/collection-partial-copy-actions.ts | 8 +-
.../collections/collection-partial-move-actions.ts | 2 +-
.../src/store/context-menu/context-menu-actions.ts | 397 +-
.../src/store/copy-dialog/copy-dialog.ts | 3 +-
.../store/data-explorer/data-explorer-action.ts | 73 +-
.../data-explorer-middleware-service.ts | 5 +-
.../data-explorer/data-explorer-middleware.ts | 178 +-
.../workbench2/src/store/dialog/dialog-reducer.ts | 10 +-
.../workbench2/src/store/dialog/with-dialog.ts | 25 +-
...oup-details-panel-members-middleware-service.ts | 4 +
.../link-panel/link-panel-middleware-service.ts | 4 +
.../src/store/move-to-dialog/move-to-dialog.ts | 3 +-
.../src/store/multiselect/multiselect-actions.tsx | 35 +
.../src/store/multiselect/multiselect-reducer.tsx | 31 +
.../src/store/navigation/navigation-action.ts | 138 +-
.../open-in-new-tab/open-in-new-tab.actions.ts | 37 +-
.../process-logs-panel-actions.ts | 48 +-
.../store/process-panel/process-panel-actions.ts | 163 +-
.../store/process-panel/process-panel-reducer.ts | 17 +-
.../src/store/processes/process-copy-actions.ts | 120 +-
.../src/store/processes/process-move-actions.ts | 63 +-
.../src/store/processes/process-update-actions.ts | 31 +-
services/workbench2/src/store/processes/process.ts | 14 +-
.../src/store/processes/processes-actions.ts | 264 +-
.../project-panel/project-panel-action-bind.ts | 9 +
.../store/project-panel/project-panel-action.ts | 25 +-
.../project-panel-middleware-service.ts | 126 +-
.../src/store/projects/project-lock-actions.ts | 39 +-
.../src/store/projects/project-move-actions.ts | 71 +-
.../src/store/projects/project-update-actions.ts | 65 +-
.../resource-type-filters.test.ts | 70 +-
.../src/store/resources/resources-actions.ts | 4 +-
.../src/store/resources/resources-reducer.ts | 24 +-
.../workbench2/src/store/resources/resources.ts | 1 -
.../run-process-panel/run-process-panel-actions.ts | 1 -
.../search-results-middleware-service.ts | 4 +-
.../shared-with-me-middleware-service.ts | 2 +
services/workbench2/src/store/store.ts | 257 +-
.../subprocess-panel-middleware-service.ts | 46 +-
.../trash-panel/trash-panel-middleware-service.ts | 2 +
.../workbench2/src/store/trash/trash-actions.ts | 178 +-
.../workbench2/src/store/tree-picker/picker-id.tsx | 15 +-
.../store/tree-picker/tree-picker-actions.test.ts | 192 +
.../src/store/tree-picker/tree-picker-actions.ts | 350 +-
.../store/tree-picker/tree-picker-reducer.test.ts | 2 +-
.../src/store/tree-picker/tree-picker-reducer.ts | 17 +-
.../store/users/user-panel-middleware-service.ts | 7 +
.../virtual-machines/virtual-machines-actions.ts | 122 +-
.../src/store/workbench/workbench-actions.ts | 1246 +++----
.../store/workflow-panel/workflow-panel-actions.ts | 2 -
.../src/views-components/baner/banner.tsx | 81 +-
.../api-client-authorization-action-set.ts | 50 +-
.../action-sets/collection-action-set.ts | 185 +-
.../collection-files-item-action-set.ts | 157 +-
.../action-sets/favorite-action-set.ts | 30 +-
.../context-menu/action-sets/group-action-set.ts | 65 +-
.../action-sets/group-member-action-set.ts | 50 +-
.../action-sets/keep-service-action-set.ts | 48 +-
.../context-menu/action-sets/link-action-set.ts | 48 +-
.../action-sets/permission-edit-action-set.ts | 50 +-
.../action-sets/process-resource-action-set.ts | 231 +-
.../context-menu/action-sets/project-action-set.ts | 199 +-
.../action-sets/project-admin-action-set.ts | 99 +-
.../action-sets/repository-action-set.ts | 67 +-
.../action-sets/resource-action-set.ts | 22 +-
.../action-sets/root-project-action-set.ts | 38 +-
.../action-sets/search-results-action-set.ts | 38 +-
.../context-menu/action-sets/ssh-key-action-set.ts | 48 +-
.../context-menu/action-sets/trash-action-set.ts | 24 +-
.../action-sets/trashed-collection-action-set.ts | 68 +-
.../context-menu/action-sets/user-action-set.ts | 148 +-
.../action-sets/virtual-machine-action-set.ts | 50 +-
.../action-sets/workflow-action-set.ts | 109 +-
.../context-menu/context-menu-action-set.ts | 3 +-
.../views-components/context-menu/context-menu.tsx | 68 +-
.../data-explorer/data-explorer.tsx | 24 +-
.../views-components/data-explorer/renderers.tsx | 1416 ++++----
.../views-components/dialog-copy/dialog-copy.tsx | 83 +-
.../dialog-copy/dialog-process-rerun.tsx | 34 +-
.../dialog-forms/copy-collection-dialog.ts | 30 +-
.../dialog-forms/copy-process-dialog.ts | 12 +-
.../dialog-forms/move-project-dialog.ts | 17 +-
.../form-fields/collection-form-fields.tsx | 2 +-
.../views-components/main-app-bar/account-menu.tsx | 10 -
.../views-components/main-app-bar/main-app-bar.tsx | 3 +-
.../main-app-bar/notifications-menu.tsx | 57 +-
.../ms-collection-action-set.ts | 38 +
.../multiselect-toolbar/ms-process-action-set.ts | 37 +
.../multiselect-toolbar/ms-project-action-set.ts | 38 +
.../generic-projects-tree-picker.tsx | 18 +-
.../projects-tree-picker/projects-tree-picker.tsx | 12 +-
.../projects-tree-picker/tree-picker-field.tsx | 63 +-
.../search-bar/search-bar-view.tsx | 178 +-
.../all-processes-panel/all-processes-panel.tsx | 109 +-
.../views/collection-panel/collection-panel.tsx | 7 +-
.../src/views/inactive-panel/inactive-panel.tsx | 3 +-
.../src/views/login-panel/login-panel.tsx | 3 +-
.../src/views/not-found-panel/not-found-panel.tsx | 27 +
.../src/views/process-panel/process-io-card.tsx | 1014 +++---
.../src/views/process-panel/process-panel-root.tsx | 121 +-
.../src/views/process-panel/process-panel.tsx | 85 +-
.../src/views/project-panel/project-panel.tsx | 201 +-
.../inputs/directory-array-input.tsx | 165 +-
.../run-process-panel/inputs/directory-input.tsx | 39 +-
.../run-process-panel/inputs/file-array-input.tsx | 9 +-
.../views/run-process-panel/inputs/file-input.tsx | 1 +
.../run-process-panel/inputs/project-input.tsx | 1 +
.../views/subprocess-panel/subprocess-panel.tsx | 10 +-
.../virtual-machine-user-panel.tsx | 3 +-
.../workbench2/src/views/workbench/workbench.tsx | 479 ++-
.../workflow-panel/registered-workflow-panel.tsx | 9 +-
services/workbench2/src/websocket/websocket.ts | 38 +-
services/workbench2/tools/run-integration-tests.sh | 4 +-
services/workbench2/yarn.lock | 1481 +++++---
services/ws/event_source.go | 39 +-
services/ws/handler.go | 6 +-
services/ws/permission.go | 28 +-
services/ws/permission_test.go | 4 +-
services/ws/service.go | 2 +-
services/ws/session_v0_test.go | 203 +-
tools/arvbox/lib/arvbox/docker/Dockerfile.base | 6 +-
tools/compute-images/scripts/base.sh | 63 +-
.../crunchstat_summary/summarizer.py | 7 +-
tools/salt-install/common.sh | 17 +
.../aws/dashboards/arvados_overview.json | 3375 +++++++++--------
.../aws/dashboards/ssl-certificate-monitor.json | 606 ++++
.../multi_host/aws/pillars/arvados.sls | 24 +-
.../multi_host/aws/pillars/nginx_passenger.sls | 2 +-
.../aws/pillars/nginx_workbench_configuration.sls | 14 +
.../multi_host/aws/pillars/postgresql.sls | 3 +-
.../multi_host/aws/pillars/prometheus_server.sls | 114 +-
.../multi_host/aws/states/custom_certs.sls | 34 +-
.../multi_host/aws/states/host_entries.sls | 3 +
.../multiple_hostnames/pillars/arvados.sls | 13 +-
.../pillars/nginx_keepproxy_configuration.sls | 2 +-
.../pillars/nginx_keepweb_configuration.sls | 2 +-
.../pillars/nginx_webshell_configuration.sls | 2 +-
.../pillars/nginx_websocket_configuration.sls | 2 +-
.../pillars/nginx_workbench_configuration.sls | 14 +
.../multiple_hostnames/states/custom_certs.sls | 36 +-
.../multiple_hostnames/states/snakeoil_certs.sls | 4 +-
.../single_hostname/pillars/arvados.sls | 13 +-
.../single_hostname/states/custom_certs.sls | 36 +-
.../single_hostname/states/snakeoil_certs.sls | 4 +-
tools/salt-install/installer.sh | 665 ++--
.../local.params.example.multiple_hosts | 18 +-
...l.params.example.single_host_multiple_hostnames | 6 +-
...ocal.params.example.single_host_single_hostname | 6 +-
tools/salt-install/provision.sh | 32 +-
548 files changed, 36171 insertions(+), 17163 deletions(-)
delete mode 100644 doc/images/switch-to-wb1.png
delete mode 100644 doc/images/switch-to-wb2.png
create mode 100644 doc/images/wgs-tutorial/image7.png
create mode 100644 doc/images/wgs-tutorial/image8.png
create mode 100755 doc/pysdk_pdoc.py
create mode 100644 sdk/cwl/tests/tool/submit_tool_map.cwl
create mode 100644 sdk/cwl/tests/wf/expect_upload_wrapper_map.cwl
create mode 100644 sdk/cwl/tests/wf/runseparate-wf.cwl
create mode 100644 sdk/cwl/tests/wf/submit_wf_map.cwl
create mode 100644 sdk/go/arvados/tls_certs.go
create mode 100644 sdk/go/arvados/tls_certs_test.go
create mode 100644 sdk/go/arvados/tls_certs_test_showenv.go
create mode 100644 sdk/ruby-google-api-client/.gitignore
create mode 100644 sdk/ruby-google-api-client/.rspec
create mode 100644 sdk/ruby-google-api-client/.travis.yml
create mode 100644 sdk/ruby-google-api-client/.yardopts
create mode 100644 sdk/ruby-google-api-client/CHANGELOG.md
create mode 100644 sdk/ruby-google-api-client/CONTRIBUTING.md
create mode 100644 sdk/ruby-google-api-client/Gemfile
create mode 100644 sdk/ruby-google-api-client/LICENSE
create mode 100644 sdk/ruby-google-api-client/README.md
create mode 100644 sdk/ruby-google-api-client/Rakefile
create mode 100644 sdk/ruby-google-api-client/arvados-google-api-client.gemspec
create mode 100644 sdk/ruby-google-api-client/lib/cacerts.pem
create mode 100644 sdk/ruby-google-api-client/lib/compat/multi_json.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/auth/compute_service_account.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/auth/file_storage.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/auth/installed_app.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/auth/jwt_asserter.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/auth/key_utils.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/auth/pkcs12.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/auth/storage.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/auth/storages/file_store.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/auth/storages/redis_store.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/batch.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/charset.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/client_secrets.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/discovery.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/discovery/api.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/discovery/media.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/discovery/method.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/discovery/resource.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/discovery/schema.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/environment.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/errors.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/logging.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/media.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/railtie.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/reference.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/request.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/result.rb
create mode 100755 sdk/ruby-google-api-client/lib/google/api_client/service.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/service/batch.rb
create mode 100755 sdk/ruby-google-api-client/lib/google/api_client/service/request.rb
create mode 100755 sdk/ruby-google-api-client/lib/google/api_client/service/resource.rb
create mode 100755 sdk/ruby-google-api-client/lib/google/api_client/service/result.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/service/simple_file_store.rb
create mode 100755 sdk/ruby-google-api-client/lib/google/api_client/service/stub_generator.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/service_account.rb
create mode 100644 sdk/ruby-google-api-client/lib/google/api_client/version.rb
create mode 100644 sdk/ruby-google-api-client/rakelib/gem.rake
create mode 100644 sdk/ruby-google-api-client/rakelib/git.rake
create mode 100644 sdk/ruby-google-api-client/rakelib/metrics.rake
create mode 100644 sdk/ruby-google-api-client/rakelib/spec.rake
create mode 100644 sdk/ruby-google-api-client/rakelib/wiki.rake
create mode 100644 sdk/ruby-google-api-client/rakelib/yard.rake
create mode 100755 sdk/ruby-google-api-client/script/package
create mode 100755 sdk/ruby-google-api-client/script/release
create mode 100644 sdk/ruby-google-api-client/spec/fixtures/files/auth_stored_credentials.json
create mode 100644 sdk/ruby-google-api-client/spec/fixtures/files/client_secrets.json
create mode 100644 sdk/ruby-google-api-client/spec/fixtures/files/privatekey.p12
create mode 100644 sdk/ruby-google-api-client/spec/fixtures/files/sample.txt
create mode 100644 sdk/ruby-google-api-client/spec/fixtures/files/secret.pem
create mode 100644 sdk/ruby-google-api-client/spec/fixtures/files/zoo.json
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/auth/storage_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/auth/storages/file_store_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/auth/storages/redis_store_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/batch_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/client_secrets_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/discovery_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/gzip_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/media_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/request_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/result_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/service_account_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/service_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client/simple_file_store_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/google/api_client_spec.rb
create mode 100644 sdk/ruby-google-api-client/spec/spec_helper.rb
create mode 100755 sdk/ruby-google-api-client/yard/bin/yard-wiki
create mode 100644 sdk/ruby-google-api-client/yard/lib/yard-google-code.rb
create mode 100644 sdk/ruby-google-api-client/yard/lib/yard/cli/wiki.rb
create mode 100644 sdk/ruby-google-api-client/yard/lib/yard/rake/wikidoc_task.rb
create mode 100644 sdk/ruby-google-api-client/yard/lib/yard/serializers/wiki_serializer.rb
create mode 100644 sdk/ruby-google-api-client/yard/lib/yard/templates/helpers/wiki_helper.rb
create mode 100644 sdk/ruby-google-api-client/yard/templates/default/class/setup.rb
create mode 100644 sdk/ruby-google-api-client/yard/templates/default/docstring/setup.rb
create mode 100644 sdk/ruby-google-api-client/yard/templates/default/method/setup.rb
create mode 100644 sdk/ruby-google-api-client/yard/templates/default/method_details/setup.rb
create mode 100644 sdk/ruby-google-api-client/yard/templates/default/module/setup.rb
create mode 100644 sdk/ruby-google-api-client/yard/templates/default/tags/setup.rb
create mode 100644 services/api/app/assets/config/manifest.js
create mode 100644 services/api/config/initializers/clear_empty_content_type.rb
delete mode 100644 services/api/config/initializers/eventbus.rb
delete mode 100644 services/api/config/initializers/new_framework_defaults.rb
delete mode 100644 services/api/config/initializers/new_framework_defaults_5_2.rb
create mode 100644 services/api/config/initializers/permissions_policy.rb
create mode 100644 services/api/db/migrate/20230922000000_add_btree_name_index_to_collections_and_groups.rb
create mode 100644 services/api/db/migrate/20231013000000_compute_permission_index.rb
create mode 100644 services/api/test/integration/http_quirks_test.rb
create mode 100644 services/workbench2/cypress/fixtures/workflow_directory_array.yaml
create mode 100644 services/workbench2/src/common/html-sanitize.ts
create mode 100644 services/workbench2/src/components/data-table-multiselect-popover/data-table-multiselect-popover.tsx
create mode 100644 services/workbench2/src/components/multiselect-toolbar/MultiselectToolbar.tsx
create mode 100644 services/workbench2/src/components/multiselect-toolbar/ms-kind-action-differentiator.ts
create mode 100644 services/workbench2/src/components/multiselect-toolbar/ms-toolbar-action-filters.ts
create mode 100644 services/workbench2/src/store/multiselect/multiselect-actions.tsx
create mode 100644 services/workbench2/src/store/multiselect/multiselect-reducer.tsx
create mode 100644 services/workbench2/src/store/project-panel/project-panel-action-bind.ts
create mode 100644 services/workbench2/src/store/tree-picker/tree-picker-actions.test.ts
create mode 100644 services/workbench2/src/views-components/multiselect-toolbar/ms-collection-action-set.ts
create mode 100644 services/workbench2/src/views-components/multiselect-toolbar/ms-process-action-set.ts
create mode 100644 services/workbench2/src/views-components/multiselect-toolbar/ms-project-action-set.ts
create mode 100644 tools/salt-install/config_examples/multi_host/aws/dashboards/ssl-certificate-monitor.json
via 4ad6191d53207a8b2d4c0c8a30b18119daaa5fbc (commit)
via 56a2e5c346622637639e2c93cabba14cf853bb11 (commit)
via b6c0e611996b07c10f65c6fb3c204e7ca5a1b29b (commit)
via 9c78326f370f1875e41422e2d2c8a3c5a86c5bf8 (commit)
via 894e1a3d70e9ec1b3e8619d1822410d665fabab4 (commit)
via 525e81bdbe18ea369f5a61a713e743608bab2e42 (commit)
via 5fec43173f9744cbf49e422468a71cd8a9b5d9d3 (commit)
via 3ed6fab9c3ec7ca31133e4d4c750d546727b1847 (commit)
via ed1d6f12ddd0bd0f46ee47bf560cada40cd00835 (commit)
via c51e59e03bc721de2837db7958415766bd7b46c8 (commit)
via 14c8fb3d5ae381e6bc0609530209ee7f7a584fe3 (commit)
via 8e913832ad289fd28700f4081046b7de48688130 (commit)
via 365e79dc8fdeeed324c3e6f4f20ce200f4d28c3c (commit)
via 5b30fab0552f623a35ff5b89b90dab82dfcee258 (commit)
via 235f2d60f025823a72927d7ce56f4214c92cc875 (commit)
via 9f32ba406d862fa0ad79ac7c23c6b0aced1bdf13 (commit)
via 66088cabf30c5291ad8894e7009d9c9af466c158 (commit)
via 359be27e63987690c6e14813c763ea349f4a9534 (commit)
via c84ffebec2f5f7d8db00a2ce82e7c764ccb4cdd8 (commit)
via 26e2f985f4c2b511c59977e4c63158649f296624 (commit)
via 88e18b7b9826b05e8485a6a99593ecda850969d7 (commit)
via 7435f58364e90b8bf75db21602592ff0e7559b48 (commit)
via 9f40073eab9f4368bfb215c27edf4fcf52ef80b8 (commit)
via 788884922ce53e8884ff55f0fb11cb967629b72f (commit)
via be13306c210c458dfd74f9a1aab8377534f8760f (commit)
via 5b15a8ec15e1afb4eb5e61af59bf237dd346ff8e (commit)
via 79c3a619453df42b1177f92a442700906ff13c64 (commit)
via c9b029a3b2efaf6babe458cfaa70b08a3debd4cc (commit)
via 60542dcecbffe14a43098d9e68ee6ae05868df1e (commit)
via 680b25f82fce487c636e841a4a3d83379e5a4264 (commit)
via 3f3686330be2141f0cacc511eabac15cc8449e7c (commit)
via 763bf38c5dd4763619bd72394f604a173fcdc510 (commit)
via 5c43d687670c99b960c4fe113bc77690fc348614 (commit)
via 40df049fb776b8bfaea738d8b476f8e5c4748919 (commit)
via ed0c116ff4767049c4d1d24358a7a15df051f8c4 (commit)
via a12de3eeb2f75458120357ed520bb511242104bd (commit)
via 24c13908a2cf5e4367899ad0af6b53cb294679e1 (commit)
via 2966d83fa4e18eb62d1bbb1c9a0c39d9d845112f (commit)
via e11c6c520d8d01397f58a5cda1fe7e5e5e06acab (commit)
via 75b017ae9d566d523e448aaeb863c4d89b3548fe (commit)
via da83807d6bcef1c1f0bb78479c5ec17f150f5eda (commit)
via 9b9ada224856e289cdd9e81954c4ea3c3bc1fe68 (commit)
via 01c6fe633e9e535dc95b62114744033acaedb4ee (commit)
via 818611f4561ec927935f2cc1e71c767800899c8a (commit)
via 9c9c2ba3eb1b7c3a411348f373abcdc308aec0bb (commit)
via f153e5c6803719fa847705c456a536072395e68c (commit)
via ebbb591d0d68e10934e3c8132b24b12a70daaf99 (commit)
via 2195844ba309db0ec552aa8b14a7f02cf74e9b7b (commit)
via 8833f20a45011437ef37bef17a031398894774d2 (commit)
via 645785be096302899e754354504aaaffde4d4760 (commit)
via 6280dbe8a31b9fe9afcf28041cecd29382bfa437 (commit)
via 382460d9b5614598bfc6a28f93a1e140df45ab4a (commit)
via f361686b04e978c652f4d7442f12511fdfd06719 (commit)
via a9435ce3d745bef944e739d672efc9108253a296 (commit)
via 85d79eb901f52a2fb10fae4bc64b8f9a18dff781 (commit)
via 099468843d687fdc8c6fbb0f0e3dc54f59d0de15 (commit)
via c9125cabaeb7a345f9180db5b9f6442b1c091f07 (commit)
via 1a1adf32d7b12322f3ab3bf5b0ddd3bd55d061d7 (commit)
via 7b9b34fce607cd1785c2029f9b8dc316153f3d10 (commit)
via 4fd40fe19bb3837efe50971b5d9359b0c1c87c93 (commit)
via b7589d1ba97904174ba427e245d35998d23c6b70 (commit)
via 9fd9c53ee729dd533a1ff42e31cfd6f5b227fb0e (commit)
via 2508b089d2369bf57811f9f96c14c2ee22dd664f (commit)
via 0708f5dd30018816be89fc3ec02c29b9ecb92953 (commit)
via 7b51c206b53b1c542be66bd0e277ff2ad87894c0 (commit)
via 1d6706fd7ae3f1c69508b1c25afccd85f6362e34 (commit)
via 4e46cf6d5000e931ddd1607e40087571664a8a11 (commit)
via 5c898f83a2bdd822a27484664e771dc4c5027851 (commit)
via 23064a8e0ced7fb43269434e73d553c0338fd6b8 (commit)
via 91ebfb6d3812313dfa13caa75a6e5fb426c0d519 (commit)
via 407ea7b545e9529afe12503635e09cad23a96060 (commit)
via 5f2c5c47d88f8225c63e3cc060cf6f55faad257c (commit)
via 4ec55841b965ae33aad66479bf4d4ad41e6a0b62 (commit)
via 92eefe98ca9631ee971881fc46f8a1829ac897b9 (commit)
via 6796b44d4934ddff098e1bfcf7b842ec11e4e210 (commit)
via eccb6ba135ebe1bc73bdeeed89150d3c4ee26126 (commit)
via a83c43f946e516ec43924c30e7f083325a6f3730 (commit)
via 2a2f9c29ef2994b8dd25130715aeb46e66777763 (commit)
via 20798b41fd3a5c012141391403d7caf066f46086 (commit)
via 5729de6b47d3e1bf40f4b2869ffcc6fbf88d0085 (commit)
via 452a671ede48733833eb84d1a5c19f0441db606a (commit)
via ba12e336967fad5b32c1a6599aa15296b6d36ccc (commit)
via a5af979df2c162b6f7918e0997fe2b800a88fa45 (commit)
via 220869d94387efb179d1692ada16f39049f56700 (commit)
via cba2e466c8708c1a89ae2d766d31fa9d04d6f3be (commit)
via 1d904d1e54b91edefc95dee9326bb726eb646d9c (commit)
via 0f0562320c97412d12a5c7d7f1c89b807c9d0325 (commit)
via 621cd0a2fc6dd8c1b63eeb687b4c4b7efb130f14 (commit)
via 91492fc934a2ce4c265efc338823a36bf871df38 (commit)
via a754365302a9066f5ed4f27b743dd93507fe2059 (commit)
via 305ca4a6af3a93c0c85adadc330ac6b0c6abddf4 (commit)
via 3eda00155a3d816c7e65632c7da9896ffb04faae (commit)
via 15469ba0284ac7d26de058cff4ae4e6ce6abc74f (commit)
via 528c6dfb58318bca6deefc3f1097122ddd735203 (commit)
via c38a6d84f0dc5bf5a5048095396a9142de9938d5 (commit)
via 614e675e6706505bab6d15aaf916d6c2e4ec1de0 (commit)
via c29c2feb691b5abbffaf8f177222d2973ad1b19f (commit)
via 17d60c7ce9d7a358ab59c43d5c8d3afe506e5dad (commit)
via a86a6544f54720c5941a32187235ef5287caee07 (commit)
via 1d068f13d0c9148dcee20c7802bf61956f8e3267 (commit)
via 42d962946371fa4d388f834da3f301b3912648f3 (commit)
via 461a55e53382e6acd402fc5c5ff3f944865daac2 (commit)
via bc80b56b75691f7571e3b86f3bb50cc26ce9d5b0 (commit)
via 4727334c7ef28cdb7fb2df89211c09eb5d51bef4 (commit)
via e3ad9c3190f3dfad24e4d437149cf2a4462b2464 (commit)
via adec01514f703975a19b56b2582f6cfb06f1c79f (commit)
via 07fd56f100ce60ed9dd70365a83bf6984bcb9601 (commit)
via 780b538596d1d66bab3e14b7399c04cc92a4dbe0 (commit)
via 11e786a3643a6813b13a1322d18cba74a1a0233a (commit)
via 72964a6aba83a007fdafebb5131197fbe0e33929 (commit)
via 162665e037ec2de3203e8ed34991b1f443462382 (commit)
via bc01781d2a6cbfed6d2bdf94397f97c60308eb64 (commit)
via 266c340d47ed162c44e0e3d321619734d4500109 (commit)
via ab9e90bcdc6db96aed24c9362efa87ce99e1f923 (commit)
via 084ea0c0c8e078dc006e19d2aa851a30817b01c8 (commit)
via aa7fdb114d208a401980f3001e7adcb252bdc95c (commit)
via e9ed1eb8ec39f40d859489cc2b66687328b3adbc (commit)
via 85ec07b3d4f0a14285a0d20db682c282e490e7e7 (commit)
via 7bdffdeb9ccec113d1d9b848423be60d85a501ed (commit)
via df52ddea81128be94fb49fb5bedd7be692ac949f (commit)
via 94c05a1d46dfda5766c3a3a6a220e3471fd4b5ec (commit)
via 97e40209600c094eac15085627e49da52ab0f517 (commit)
via 6a16dad57c5d082d00199a13440357b8ff204a77 (commit)
via 2c0334b2c3209b1fbfe52373ce9108a45149c80c (commit)
via 4eb78e44b6f046607d0b22cf2dbe3133e458463d (commit)
via bd8c170d90e2fbb56c5e72717df61e971f518b84 (commit)
via a3e925e4c779c93c08805191f3973d7d7ebbec23 (commit)
via 7fec33bab2fb68405a1c641d3cd956d21487e14b (commit)
via f155ad2074ac6afea41f7cfe04be3eb489e7e259 (commit)
via a4257a0f91ce403f09c01a89e982e5e336a0f033 (commit)
via 4841996e3529dc42aa0cbae94389fad85bdde2f6 (commit)
via ade2c46d4922fff269f4708a0f5a623a3d10bc6c (commit)
via 5e63fe519acff84cda7307a4a2d96d5f3cb06759 (commit)
via c8c1fd28b0a587a91041e02da13918ca34a5ce6f (commit)
via 350def36fb45c1448e98c4a0bf3f149dee2d5405 (commit)
via fa88d59460b053577e5403e27465495d369353f6 (commit)
via eaa738a4bf29f2147271c7e5f2c529a1f84ee01c (commit)
via e246fb0492e76b16ea863aa637b872b0a1e4d4fc (commit)
via ad73e81695d3501253f64acd5a63e83deb45c279 (commit)
via 4417a36247e40e7b2204b19324922940395c5361 (commit)
via 0be244512a2de99fa3757990697d5bb01d9c6c6c (commit)
via d2af4451671655838f1b3b16ec86c7c37ec7e8e0 (commit)
via 2c2339c775f9112f5da638b2beb81d8b6d5abc2b (commit)
via 58afb8dfcfa3fefa8e1b28dc418b97c51a73b7dc (commit)
via 51ab4e57c3e395bee108270e0b3620bffb0c5856 (commit)
via e10e24d713e5c31cbc34efca458f5718eb6eb000 (commit)
via 773f01cbf25bdb7bb4fd110e5e845ee71148a536 (commit)
via 1c447844404aff3cb812cf42a915ba3b87c75986 (commit)
via 9850ac96ab2c11b9776d56beef98d18e4dbdc27d (commit)
via 9d1eefc4d62b60af68c2d9ba83f2f58c862198c6 (commit)
via fde75b5aebfc2b83ff17128528f6fbcca5f03c5b (commit)
via 375779392bdbb3c6cfba4432bbf40448c5e56c16 (commit)
via df566fda61e84d8d99ac133ecc3dbc8726dff40f (commit)
via 73a20dc01eb18185bbccbbe3878b9fc56e4cbad8 (commit)
via 80360e3149727e7c3249468782ce605ff3d42a5e (commit)
via 36e6e87437b3605e9f72b21ae0a63d7fcdf7c47c (commit)
via c30fc0c76112671804c2bab41c561f1a6f381920 (commit)
via 5dc68f920a97034ad92e07caacf92165279c0a63 (commit)
via 9ff9b33208ebffbb5be7fbe0a684b981f16e0533 (commit)
via f9eebd01bb13511dd9644a061a709ac115c47d47 (commit)
via 86ab45de6b3924d50172411c24242dd265b5e9fc (commit)
via b89baf6ccf8ef6de4b3ab139ebf48bc53d4140ed (commit)
via 927e6781a1bb21e5ef1d887b89916685601b8fd4 (commit)
via 5e4f9bc4bba1ec5032f853266bd3f747e3d52588 (commit)
via 950735385f7d8871839e7690e7310218cb6dd9a0 (commit)
via 66997af197a01e972764bc395feecb92f3bf0a94 (commit)
via fcdb05d9562984d2414c15c2b6f34f7ff95c6ef6 (commit)
via 2d8e23a659259186e098d119e84407a216d5be6b (commit)
via a4e232d9de469211536e1733520e2cb54bce9f95 (commit)
via ec4ad3f3b7ac2126d36479cd63b58135a98a9f33 (commit)
via 10801e63c5029a2fffc3599235dddab62a2f3480 (commit)
via 66a1e8588bcefb2886b4ed3e34d5f748394c4c9d (commit)
via 20d7f7ebaaf9e1841d48a5048df8a7193b7c9a8e (commit)
via 822ba3d61d93ff19c41861ddf1be2fcca20765fb (commit)
via 65b22662b8a9370e9a85d8de639283c378a3dad1 (commit)
via 9ecdc799a7f75f971c5d79aa812b7d75686c413a (commit)
via 6d1c41d6fd83824669cd1a6d714ea6da1ae7ab4c (commit)
via 0dc881dfb7cc567f27429686f972ba0bf877d651 (commit)
via 0b6ccff62d345dcb196890a24e78a1681ead7638 (commit)
via ff8bab30fa2c0dabc4ef54d538b6979adf813beb (commit)
via 04af9f8d5ec001805f4e8f4e208ee8bf7be5f8fa (commit)
via 514a342ebb895c8a2a0e41649e9b375f5eb8b74a (commit)
via 59a77c79b4d5a2286eeed3f33af78d0b30caea48 (commit)
via f1b0b5b85b7479156aaaa55c0f2def6ffd7d3a40 (commit)
via e84fb97573407f2ddabdcfb3b905d201d0a300a5 (commit)
via 11ba28b72d1bb268066756381c645710a80bd211 (commit)
via 840619fe8363099a9222b2cdda2d9e5d266a5801 (commit)
via c2ba0170975fd01e2b3d9229b491ef2dc8c2f010 (commit)
via 72a8bf2138429b61dfc9710cc41932396b6f5b4f (commit)
via e4342872b52b88c232952317041fb4426faceb9b (commit)
via ddfb91e9eee0902fba8b972e2724b2eb4707654a (commit)
via 92308b1b044dee2970c4409a0da660ccbecce945 (commit)
via e579262441bc63d300de37eef08c827e0d69ead6 (commit)
via 29bf848cd280e8873dc82b7407bac31390e8dc9d (commit)
via 09749ef22f0e66b55aa6f448f23dbeadcd2e6321 (commit)
via 26510a8ee080eac922abd6c981e2f077fe1a2f58 (commit)
via 841194f2456f9f4874fe6ebe1e4639c0b0421b97 (commit)
via 7a26b8b5d6691e51647dda8a1c4a73abf3b3c097 (commit)
via 9794246986e474c0b1c659c6463c3870362a0600 (commit)
via e5ac7f35c6fcc3c0db6dbc60e84ce7147bb85cce (commit)
via fe8da34676be7c6fbb1042fcfcabee19bfa424d0 (commit)
via e3d4acd463436a0ed7e57a79c1b48ef010b53a76 (commit)
via df1ebc0e3184afd3fb66414651fc1aec713928bf (commit)
via c1bc5396fd54f376a11741cfb7ce420b5929a5a5 (commit)
via eba78b04f0313786bec3f6dfd4c992f69060a8a1 (commit)
via 348571756698f34074a5448ceee4eb7590ca3cd7 (commit)
via 2d1d16aaae709b0f0b3c582c7cbb9c30f451842e (commit)
via c13ae783174624c9f1c48bf090e44fb4b9501320 (commit)
via 6d918ec7f9bb4ffc58d6e482a63031c8a51e20ed (commit)
via 030a7ee62740e5f7def3a7333d1c8996b3111fef (commit)
via 4b58bfc5b58db18e4816102f9850757f0884a42e (commit)
via 322ff98d31140a365faa48e9dc78fc079c4b1ee9 (commit)
via 4960b0e0b6af812e2c34c040163b1ebfa9506bb7 (commit)
via 401c2c71179825e6c3350177c0f46c503d66a061 (commit)
via 55f6306112865521082eae53f8b42eb5bc874905 (commit)
via 2d80ba8feac6b59b24e4f536ed29698789c276c6 (commit)
via 3c0213756adf7694a993db1e6dc87568ed89c74d (commit)
via 6ad3e0ec18c16248aad6922a8f9fb594f8eda76c (commit)
via c01fc0b27737f2fc0535f4fe2f1fe614bc308354 (commit)
via 4419f1fcdbee8eb8b9c8da8825df7d307b124eed (commit)
via c9e5e85ab5665baaf4fde6a87cd5f163dadba010 (commit)
via be461c33036baefa10dfa2b424721d37b64f3e76 (commit)
via c14aed71863a2a485b56bffcc70048f6d4dc5df0 (commit)
via bb8f9b8724cc2baf6b311d8cfcc25f45f4ad2cc1 (commit)
via 78701caa6b3f07425ac32eb95c60107af91f42f7 (commit)
via 91e3daf696cda4f9c8bee8ef73a2f15ce0476b6e (commit)
via cbda91a4e67fc2cd88ddfb54e5faf4605a79c6c7 (commit)
via f05038cfab2cc9bea0c34088e478177fb9b0a439 (commit)
via 4a1735427d84743f6c2f3576263fdcae397cf9e9 (commit)
via a04b65f896ea8e070bf087dc15ef552e16b48106 (commit)
via cdc9e2ceeb7518f2f8bec47531151a521830fb2b (commit)
via 5199588a10410b200aa2c01a75fce7963296fd09 (commit)
via 974cabe78a811766a812206e287a6c488bcc6c52 (commit)
via 48231f0daea46cc2022bb0f153c2419fe7283911 (commit)
via 0127a60904f8f392d60111c07ac80f461fe26c22 (commit)
via d3a9348beaefdd355a0a88ac9f43ad243ae2603d (commit)
via a542b89c232184ccbb7435784f32d76f7a11a892 (commit)
via 3b40453701265dc66f8efb5865d29cf508f3ca43 (commit)
via e506be286860ea57065816465fd22c203b9b145a (commit)
via df893c906a6387ade4767425ad8c68e2289ca359 (commit)
via 72f74086108b60a46458895411dd9afdaae8f383 (commit)
via 345b5f9d1bae7ee8cda5383d4ac9abea6b54ca51 (commit)
via 0ccf8be1713e2a21ad4214d6f64913d1a9d8c8e7 (commit)
via f79ee597833b880551baff9aef059919d80d5cd7 (commit)
via 1a38a6a9a715f0fca6d2f53e38ddd3b338e1bfe0 (commit)
via 5ea8f6ef6a823bdbcec036cded13d03be4d3724b (commit)
via 5fa710bf0218bd474233fd5867b15cc6622e6b31 (commit)
via 0213fdd808604f83ef79d0e0a415d8311e018a2f (commit)
via bdcaea37455b72c345c7305e6a7bc4ba63d5c1b7 (commit)
via 0d868ba0ba58f1bdf4e75d8651d894c39d1f69ff (commit)
via 455630923ff4cc392410251f6fb1c2ac330cd2c3 (commit)
via 20432a4533136a5ab9fa52c2e2ec2d90a855ecfb (commit)
via 8cc6fad164fa9d3bdf0fb5965967031a8e1ce9e2 (commit)
via 544f1dceeb4e5fcc63b683d3edac48e62bca5958 (commit)
via 17ecd8b1d6bf57e0f3e1f1e70dcc589188cad670 (commit)
via e9b8af6b59b16f9a9595bae87fac13c4e0969f23 (commit)
via 4aa8d709fe8483c295a6d16dadffb5b11848e5b8 (commit)
via 80794f079f005fd3d927b9d330a46bcc96a1a132 (commit)
via a29e101e0b0c184206f454932874bc5b23667d75 (commit)
via aba81749d2477043232b82300c0ce15548b61888 (commit)
via 03a9907f84d2722bd11ce8c3095de4a5ad3e07b6 (commit)
via 171491643aa3934ef9bd93fa1596fe5c386cedfc (commit)
via 8e6de8fb13348e6e0b0ab47d91ab65f99033e174 (commit)
via 25c0de8aa20f801212dda2dff23216289487d08f (commit)
via f63db3e0224e57695adb2c5fa975586065f6669f (commit)
via 95bfd77307f5d4571bbcf01565361ec991bc6575 (commit)
via 4c34de655fc7f8839b205b48f460a168f302dd63 (commit)
via a00b606ae871e9919fec54b81cedae338b6e4531 (commit)
via 84ec45edc5fdaa21c7d3e3401c877b90de40a972 (commit)
via 101971b92790b8461ac4c3387014fe70cb7787e5 (commit)
via 1cc3a7c037077e3d64fda794e239c0096b3f033c (commit)
via a5ff50e39038478731fec15a855f73a118c3aafa (commit)
via eec7aaeb9c8c2feb708ed68ff38b67be7f29afb5 (commit)
via 7d974e3dc14efa8c05f1a02fa6ee7be37ee2b8a6 (commit)
via c11d6bb3f15d4b6f2ba18a26f355bb944a5ef090 (commit)
via 26d627007be2bd8fc68844b43651b1897a56e391 (commit)
via 76d90fca59fbc3cd21ea1af01922eeaf63f2e79a (commit)
via 59342f2ec8fe1ec2c7ba63a556b2003c23e687fe (commit)
via bdd30cdf232d735d8fcc16b65d34f3cee5338f35 (commit)
via 778531e6b32ee2de9ca4a5f58e7c281330b8f2a4 (commit)
via cc10d951ab00b84ef5534a74e2aaa538fbc05801 (commit)
via a646dc012008ba2f73e5b3707598640fa5f9f1c3 (commit)
via f517db038748fd39adaf395a400e79c6c2b3b3d0 (commit)
via 7db74f672f64b3e647a98c1d8e5978b50d79538d (commit)
via 260fad7638148cadd52b9a2411a6717485553aea (commit)
via 1c0fefc8ec275b53d4adef0546e2c3b8847d8b93 (commit)
via 9bc1495877f624d3d0787384f7cbddc6aedd8bab (commit)
via 09489ada444106d040898c9e013a3cdb00328432 (commit)
via 7f60303ffcf3aff1db6d808c1939ea6a3c5148b1 (commit)
via 89573e33f317da0633acce7b4160435e20318ca7 (commit)
via ef2d81c44fd0df585d89265859e36e23e1bc567b (commit)
via 249df8a49b8a6f0e52a10515d787ee19f7ff6c14 (commit)
via cb8b7a2e6087106451c79a1ef8cea38cfa7af5f4 (commit)
via 857b16aff9c3e16d3be35d329f745528aa4acf70 (commit)
via f7f65f4f57d166716e26aed2967942935d6b59c2 (commit)
via 3def82c401e28a430b222bee86ede13158165976 (commit)
via c1b5417d1036da83283b7c84ff7cae5c553ada27 (commit)
via 56add69a087e8c94f3e8c99fb04501f7f570aaeb (commit)
via 2cf2121b848c11f5753c54d89415dae67a6f037d (commit)
via 5d0960df88dad180fba1b662f9d5ee5c4e269d24 (commit)
via 6bed090af13bba56d6cfe5f5a96add95000fa87c (commit)
via 6f20d77e7eb89cad79fb486d8df681294c16f20a (commit)
via b71489842c2b04a5d311db61e5078df375f0c51b (commit)
via 182ef83a9e654c313383008778372f02d3f0e4f1 (commit)
via 284a69986ca9e9057752b60a3e7099c426129060 (commit)
via 203f0082b029ff4b88d7f9f719d14e0a89eb6f6b (commit)
via 4e527029e462d60779c7b40ed2ad8b1cbe6eddd3 (commit)
via d4896785f36c82edc5fbf14a2e58d94623c09c1c (commit)
via 6b9cb4f828257684edba0809461fa2f508d20f15 (commit)
via 6271a0f335b359cde84a04dbf4d4f07f63ca7fc6 (commit)
via 5e1a45ef888c6b3eda51c9e41f0eb3c22f3c2b43 (commit)
via ba0c5cf6838e36740881c4dd9639043b527bf82d (commit)
via 5e3f6c9ad492c43044c88ebdc7eea6bdff667f46 (commit)
via d4fb5ff8307f22f49a78f8a1a804e3bf534c6173 (commit)
via 52b9bbcab345d2d9ffbb18bc8d946c1d12180271 (commit)
via a3548962424791bf575eb1ef68aac09b785cfdbd (commit)
via 6c12272392a344a16ee4ca1b210551d522c1dc82 (commit)
via 773c4d491fdb5a6b228165e3ff2f62db7c1f2237 (commit)
via 2d453cb79b4e94ed3d559e7874e0d1670daf82da (commit)
via 78668c47fb945a3371231415c8e6ad44895bd0ff (commit)
via a0f98a50de61aa4ef6a8beab91e1e08970196ee7 (commit)
via 8efb99776ee267be4f626baef911408d1dda6429 (commit)
via 2fe4245dc28c738fca783b83bcae65c213da41bc (commit)
via fd507a52e72e992a3fd19309de65905341630396 (commit)
via 5cf405e6a51c6c96fc35d8dfba135132c2f57b67 (commit)
via 8528ba00c107167599a5cadddc4782a7d6fc2251 (commit)
via 4ed6415ef859ccca13a46c77046f9febfb05bb2b (commit)
via 01b836fc5b405d03f77155687c9f42664935008a (commit)
via d90fffe9d937d3e05c04106904b18dc4da235bc6 (commit)
via 8aeb3c81d60d665a1ab83684c1615b003c1ebbca (commit)
via 53592764d7a3299857adb6db6cad2eba29788428 (commit)
via a47889b33a2b09d0246611d759547f55b8dda7e6 (commit)
via e26fdc06a54e8b4fb7c22f78d335d02d2d7c3ea5 (commit)
via 05132236c874d69a06b379b835131861c3e5926a (commit)
via 26cb1fd09826e6460febda92e1b06c3a05c90b28 (commit)
via 7888c50a75bdadd042548828ba7da7f2d94e6f6c (commit)
via 56d7ccfa86942fc066a8e3d527c339902ac353e2 (commit)
via e6e51406134e71d493f5258917915136709bcda2 (commit)
via 9d70bbd8258e1223e89c14992dfe7ac1d56a11ae (commit)
via 44821dc84765936ce99fa2d760ef683281f0a578 (commit)
via 540e89bcb91a9f2f1f2828083eea632581953aa8 (commit)
via 2bd3f83db9934198b658b7035a7be65017b754d9 (commit)
via 23575ae95aab42c4c4d9c2b5ee0236fab004dccb (commit)
via da766e40d5119f23689a3d1859fd1473b4d7ad5f (commit)
via 73931b1077dbf1f6cb195dfc427b1a7a6fe89a33 (commit)
via 8d6c085a1a7f0a7895245949a250d11d15117cf9 (commit)
via aceb1f665394d84ec238d6654b5447a37c2bc3b3 (commit)
via 1f21d1dbfc538a7298f70525cb304542e8bf8bc0 (commit)
via 82b22d772bfa4c6c422ecb4f57084562357aedbf (commit)
via 37be20bf76bba0f6dc6fd40f0fcc3d012c6b7e49 (commit)
via 9e16e70e7f9bc9fd0e0a52eca9a9c37a45ef3639 (commit)
via 1fa83e67963bf49010b502ebf12f3b716ed6df7f (commit)
via ee9d2efeaefb43fa77bdc567ddff0a46d3453a74 (commit)
via 25bd0899e19240eb1468f94c7b174959ff547761 (commit)
via 13d9ed51e225684409712d6da4715c0f6037e930 (commit)
via 3c40555d09e8bee6db8e0c9d3169cf66b8a92c3d (commit)
via 178013be0ccd804cb0579942ba50faa7cc68d52e (commit)
via 4b15593e83bf1a6e1c84c1e18af4b11b9fa1d134 (commit)
via 27ae52da2c6bbe5ecd0bf2262b3f190597b7415c (commit)
via 8dfe6805d1bbfc0dac16bade360c2545d0519852 (commit)
via 2a7fd99c212c33a1ec9911f8529fa5afc59a7bb2 (commit)
via 33f0193ee7e0c7660413077c86304ecd30c080b3 (commit)
via e186e23688c92f91e4cbf564dee5018789e0b8ad (commit)
via 5bfb2e1cb9f87c2e62aaae870a8789ed132eba50 (commit)
via 4ef379e48ed887a2c6f5eeeb84753bd0ec68c124 (commit)
via d9c4c82329d110b180003a36142e0a8e4d11ccc8 (commit)
via cb8dda3b04dc65e5b9a87593ae3d985d008b6f0b (commit)
via 7f5aa7c58dde29568ecb7b6bfb16f6b762c0ac1c (commit)
via 3b5ffa7cf6d51c5842b3421b41804b925d6cde3f (commit)
via 5529d102df411367c672d13bdb93a5cb0c7d0127 (commit)
via 64381eec0141c807f4b15093042450e2f680c46d (commit)
via d8b1191390b3d56740f133b021936f352ca49d55 (commit)
via 905c83db0b70400bd596388f5b3676adedcf8eb0 (commit)
via 0043311bd95a8da91d0cc774542e7b008da46a42 (commit)
via 9a930f08a3b78221cea9cd90a8e8c9a77e3eb068 (commit)
via be61dec610e6cfd400c3e616eb3a30a062e25116 (commit)
via 37044d922164855ba5cc443e775037ab12cdbf95 (commit)
via 7415e01eb23989648fb4850b5a0569796973445f (commit)
via 218c89998f66809177b40ee46aeb6dcbfdf1d596 (commit)
via 49638a3dc44b79c711d44443c1d03ee02360bbb5 (commit)
via ad040e37430803ffa7db4f1856a4e362ad2cebfe (commit)
via cd84111169de72138bf831690946031d5a3c156a (commit)
via 1298d37ebe4b6558ebeac68915208e3fa5405968 (commit)
via 312bc8bb5bb01f8dc3fbf98a98a5de402172ba88 (commit)
via e78c96c45d3021120384c12286b7208a53358f6e (commit)
via e4842b4e0901470a984f5b9244a8b89bb7726f42 (commit)
via 2f5d32c82d865c6760fd857a2bef235592f4e4a8 (commit)
via d69e82869d237a5665142cdfe1d783e8fb49d23d (commit)
via c68eb6b39deba5d850d1b0ba7b59ec42850d8cdb (commit)
via 3bce3f7ad3a50e6e8c7da962691e53d45d808894 (commit)
via a1b1d0f1b3413681d26132f1ca06098ca8f1e8e3 (commit)
via 19414f258a2a1e354e8721888dcdf68d937b0ec4 (commit)
via 5e732ed46fedff23e619535cef7f04a86e18a9c7 (commit)
via 4ace1969ce7b8d1a75eec8ebc7ea3611c4ebb6e8 (commit)
via ca3155fabcfe6dd61b2151c52861b2786e9bec40 (commit)
via c03ce6b41430afbe6afea76c9448f6895fd18781 (commit)
via 4fc63fca58814fdc6ac21b08fe7b8c2d84e2c3f7 (commit)
via b1fb83ab538f6690822c16e5d08264278cb5942b (commit)
via 31c39c3ea1729dc555d2d2bcc210dfd9b6ed6d70 (commit)
via 497c6e358e3dac2e44456d319e81fa130e7479c7 (commit)
via 627f0941ad141017f3bc214395e69b1367c2b20f (commit)
via e78d91e8d1758c075ea35faa8538eab40ebcbfaa (commit)
via f23064f5b8ce4f8c28edda478dfa8e773e61d8f5 (commit)
via 371aed14aedb33ed2279a1decab6c6c310fca028 (commit)
via 70f0fb817d242a804a9e1647b526348742416b52 (commit)
via b4e0af034e1454e39f3e7b2e38c5ed944d9fd1ba (commit)
via ebeaa637c88e314feebea81037c4706467f1a090 (commit)
via 707c3f219b6cf7baea3f5d2960343dc637cb7a9f (commit)
via fcd1d0754f12f601967067ed1931d0d380f5a426 (commit)
via 45f934ab9b1d0b6b9ce1797aa37660c28d5b114c (commit)
via e52080d58838ddb5b1c157113e8a4876db7ba924 (commit)
via afac7abd6f7ee614cd1bbe7413d196f7c149387e (commit)
via c32f2129960b060195b773f19d8582f1c693953d (commit)
via 4cfc0ca7c782696ffb92337e3be9fbe3ed43a360 (commit)
via 9717f88d29310067fa70e19fb9afb3679c036bc4 (commit)
via b87f98819a9d71c55ab8b4512f5feb8c604f6921 (commit)
via dfadcc1a6ccb7128784c4894cbd297272db094d9 (commit)
via a1caf98fffd0c8c9b925b3102d857ce61bbe1f47 (commit)
via fe79ab0df1b03383c52283a3dcd37020bebd08cb (commit)
via c949ee986d103f3ec7fcb68b3bb6d3eff5ae06e1 (commit)
via 35fb3a159f7a2c755c619916c907776854e51300 (commit)
via 8cb7d5136d376fe28e09963eb51bee4657e9061a (commit)
via f361c2439d0b2a9b8ac839b62a868884261e7897 (commit)
via f251e3bd63d9570b64937e5531c3dd75e9f7c79b (commit)
via 03598c4817ba5b1685f29caad07863de6ca7349b (commit)
via 7cc5a6c7761f89eeec37a7947ff5aa33390558d6 (commit)
via 70fdd8e9069a8880b59c85fc1423948d46bf5a62 (commit)
via 855321c266433c2b73a683c9b7e4e1e9ea389264 (commit)
via c156f0caa8190269a03a34272480b4ada80fc4f6 (commit)
via f05f9bcf98985d6f6a3998924ff597a15c2eadde (commit)
via f34a8d68bdd096cf1b019a9806bd1e6eba028d77 (commit)
via 17c1f9f6bd6eea9321d36a45b9dfc1ca1f4fb51d (commit)
via 5de32fb197f6b98d0722c2aacc0bfb8f63a6516f (commit)
via 1eb8ce5b0258f71d936ca12f71986c94e183e268 (commit)
via 6e91ab41ffa1509dd1d4e2b8ecb559dd429c6ea4 (commit)
via d0713d7531b41a29265e921d12cbb9542116ba1a (commit)
via c161fce0c125c2c5b9b0ba62288a0e0adb50b19b (commit)
via 2f4be67955e48bb65d008ecd9ff6da9d8fe77028 (commit)
via fbf4cce4343f12e51df1452433c347abe5deef51 (commit)
via 119d8d1502dddf00ba2fc088238299922723cbaa (commit)
via bbd42ba4d776f89a45df35c6c453d061f92857eb (commit)
via c5308511f31f9713ce961a72b29c39b7b64baaa6 (commit)
via 4d0420a83d27a90b8b15dda10f27a1b89c4ca1b6 (commit)
via 71fe4cbb67a0f222c79db71aff86180d6c880c83 (commit)
via 68b5966bf4a5d80d6667abab421a4309ad688a38 (commit)
via 507ae159f9c1eb0dd6a406a3987243aab7f05866 (commit)
via 2309d8a0970d603fa1bd6b23f1fae7f97bb2f7e1 (commit)
via e5682f2f1490de87f7727a364c717c06d5f58eee (commit)
via 462f912b233957d9c944063d1f7872f0d32c7e13 (commit)
via 859bae14d31fe063ed1204be7300083b3216de60 (commit)
via a9d431d649c84f52a55852f687052b3c4f67a3eb (commit)
via a72ffbbf30cba20f3d5b2324d4b016a82786df10 (commit)
via 577e47a434702a8bdad5669b3d470cfde5241033 (commit)
via 55c0fe472ca9938c93a78bbff0e0fb1b5e51a54e (commit)
via 76fe6edc8d158f67c600f75c6bb351d7a679b71e (commit)
via 38da1ff0a3990e643cbfbd5fa548597a1618055a (commit)
via 171267ba19481f363e35332eb3a7fac3c63cbbcb (commit)
via 781c06ee0633709137ba3a4d305eb6e1db2a6dfb (commit)
via e9c6bbebe8d9a3e22d239a51b1a0fae575b3dacb (commit)
via fb10daa75864def53d1f0ffa7da3cece8cebe9d0 (commit)
via f7a4118c87ae1df4a42efdad3695e6fcb5d60854 (commit)
via b80db2511622b7600fa7a03e7db4c5c82cf61d39 (commit)
via 1a3746a005fb857cc6760fde34e78cbcbb7d11e5 (commit)
via 1bde07ef5884a55bbb47aaf30a90b122a4810617 (commit)
via 0486a1fe8e98fb613eceabfd745875ed2b0d4395 (commit)
via 8671a18c6f71d9c57fa10d650c476cace51e70db (commit)
via 8360ba81b48f6883b453f13756432a3d599c3042 (commit)
via 5c51ae289e62018591602da31748970fd0abee97 (commit)
via 47358b0f717b1c9f70e8e8a28b4258b9d235ef44 (commit)
via dbff37e90136caf5264148c95b7568ccff978f77 (commit)
via 06e815a5ab6a9a9a118014b41f023c46237156f1 (commit)
via 5534b46d016782428c8acc5ee2ff91958f9a0e0c (commit)
via c79e65e93760c758aa297b9eb5561c69b36a1d46 (commit)
via 84f02cea829ead38669efcfcffb2ef0a984e27dc (commit)
via ae041e1ca4cceaf6c94b818a2823377cdd5c55a4 (commit)
via 37d61b71dad8e424563f1223f068a676ad7baf8e (commit)
via 27542ce48fa48c5bbe16e96a3ffd1cea0be0cc47 (commit)
via 3e3cd928c063419a580c2202fb1b18b8784909e1 (commit)
via bc6b0f0c9586c28245e352189d7149a65417e0cf (commit)
via 4d422259ee1fb0db9bada72ba6b100641c2f59f9 (commit)
via e7139d6d1f00eaeb998a3fc5efaaa247436ee4df (commit)
via 0b8032ec5be5dd474b47842b7630075c1d9413c2 (commit)
via ef8fb604ad4a868cae8ed6ad31c1fd1520dd73e0 (commit)
via 78a6653e701b8835ae9b4c674100ec12f6082167 (commit)
via 5e0a0433e3ed3da21765735e0e83454bcc10b439 (commit)
via 28a7883c373533979f2cc7c5e750221eb8f5f1ec (commit)
via f1d068a91bc746ba66eead495648214f5506557e (commit)
via 9fff947ecd25b0494e8e3c6a27a4fa4fea67668f (commit)
via 259b3769c02913cd968ab3294140f86108738e24 (commit)
via 0134919a1425efa859fd0fa205b037944c033f23 (commit)
via 76b8dd0af0db0b79cc6d12b07a138d7357e12960 (commit)
via ee0307d05caf3eeed3d1acb8398937fadd2c7c25 (commit)
via 750b2c391b5418bfd3db88e59429abad9fde6c1e (commit)
via ccc29ca7f0afff5b6d038553e1feb2c4b1666392 (commit)
via 7ff688a46feb12ff62afcc35a287048f3e49fb27 (commit)
via d230941e87d4619683e4f3f7b44f19dab5017bd0 (commit)
via 4b6a2f564bb933d5411e75f664e859d6be891e61 (commit)
via 7f8c4a43bdd1eb200245ead83ba4aee20c0e1776 (commit)
via 24fc2a5a701dd4bb6edf503efee992942ea5b667 (commit)
via a60309a6b134ca66fa66a71c489e633a84f52f0f (commit)
via 13d657b6685b6396ef352dce0a561605e664736c (commit)
via 0284278f61c66ccd75a6559c815ca299e912665f (commit)
via 21fd1f3889338c2dcacd28b5f59411f4ccf37f9a (commit)
via 27dd462657b3b7434780de3250d0b2b0a75cea65 (commit)
via 1fca88a96c086d7d1c22690ad2659781a5b2f5e9 (commit)
via 17a36a0dbba1512c754fede99c95e3efdb0a647f (commit)
via d984ecbc6d9dc0e3cee65862b64ef49a34cd238b (commit)
via 3e0b4a50ac52b12a7dd5548ad78e19ec5c89213d (commit)
via b14178ed3abb38af96dd896087b4b9e2a28e24f8 (commit)
via b1b392eaa7f08c3a66ab8a0f2bf80f02d7a6e16d (commit)
via 4abc0252edc8b00fc76e6481ce731f2bba607fe3 (commit)
via fd295849b9409da87db170d60ccd3fed2bcb674c (commit)
via 15853007bf1fc8ad000bb35dafdd3ca6bfa8ae26 (commit)
via 20d73cf87fced0816460c7b5443735ab3be60c85 (commit)
via 3836b558f804ba750e7ee54eff826134ba0fb868 (commit)
via 94a979b5126e6bb4e4a1779e512131ffe32525c1 (commit)
via 0003e564b19e35386320f13e5efb1dc85cb5b6b8 (commit)
via 066ca68f5d4a77420693f1628ed6e8706a29e942 (commit)
via 6aa156daa7b8437e1c223235e7311bf506b8d75f (commit)
via 1ed677b796afad92b5f232165912ab269c0b4b8a (commit)
via ae8a15ce76c696274aa6e11c4b92b9cb881945df (commit)
via 2a7873aae58a48bf6d090f8240d6b2f6a3c16ce8 (commit)
via 855c976976c98bbee406d1d394fa9941aff04363 (commit)
via f008d518f04b5619c26af0d532b8ee98344e6ae0 (commit)
via 0b1dbb67fe7e901c5864e0c6fbf399e0423b4f50 (commit)
via 3eb18d6011258ff8302d9759701521ef941317d0 (commit)
via 4d81ad116a849e1eec5ef66c8b1c8a0a96b2a9f3 (commit)
via 1dd5c2820af7e5b80d0a7670284ec502a662b1c1 (commit)
via 349c26fa8bf0de53d915c81a03da65d99c53de0c (commit)
via fb3fc4623f6070467abdaa5e642a2e7680afc0ab (commit)
via d21e28a3bf41876211f5180c40b3a7a2ee0ef979 (commit)
via 697d7287fe8b09b75b0590da1a0a6727d9ff8135 (commit)
via aa8fc7c76beeaea11333f37a4374ed73468b90e0 (commit)
via da6977f8adf37a5064d9936e06f6097830e18206 (commit)
via 847b48357c29638d2be2118419f014ac304ce4a7 (commit)
via da7616d99dd0e97fb27c7054cfff96edf7b0a856 (commit)
via db23424881b1424a848ad4ef9e7850159bf02934 (commit)
via 944167de1b048138756f13db7ec8649552021598 (commit)
via 8f2000d51c22eb84249ffb471b7caadc4e7946c7 (commit)
via 28adb02b60e444601b4b5a7aaaaffd33f033f75d (commit)
via 21cd5b27b11b0e9ccf593102e93da052c03eb902 (commit)
via 02df52f57d09e4c52f552cc6a64ac9ae172e77dc (commit)
via 6757ee08c6e340923ac7fe82df11c791f4570e53 (commit)
via fe1e13def76957fb16380e0cf6ffab7adc6f8f2d (commit)
via 10cb874c56f52092bc0b3eaf538df7d0f9e88e1c (commit)
via dcd1eb916a9f138302cad37cb9fb43f7ad5f9e7c (commit)
via 3eac0867978f405cb3bb5fdb1db8c5a98fc26056 (commit)
via 0d0bba245866ba3bfabaa7e32a8805d3dde39fd0 (commit)
via 6a6f1fb165c757bdb357b75cc9f124638d57c50a (commit)
via d19314bd279aecc7ed840dc779589a888881c1ba (commit)
via 415dc31c97916ea15fd5c44c96c6e44c7d0bb1e5 (commit)
via f368e1d521486fcb9726e4b31a1ae32eb838247d (commit)
via 63ccd91836697464ac41c6de9337f24f39211796 (commit)
via 7ed22caf822b166651cabd78ff6c5a3488681e00 (commit)
via 0b4b24d06d23465bcae707c042e459a2026d0b88 (commit)
via 8e49ee764b483948524b74eff103ce0ba229593b (commit)
via 9df4e63d32ef1a4d3f1edf9c7a42f9a75e4a5d2f (commit)
via a46b2b1b30e53b304c682a4f4c885aeb0023cb25 (commit)
via b9639ee11c7e14faae6ef17fc72882fed42cee9f (commit)
via d999033fd6fd2635e3a72013fcfc5e8c7779fde6 (commit)
via 2622ebf8dc320480335ecc4fb5fee514fc3141e8 (commit)
via fda72888594ff5b203b0fc7bbb6c5c4897917f9c (commit)
via 3bbb377043e08f71029837f13a4dd229cf1c46a9 (commit)
via 814030babe381f7c1a5b7937d61f144b7ca8f7cb (commit)
via 91ae01aa83e1991975303dad1dbb4d883e243700 (commit)
via 74134bf87384212505a73ba02843134a785e18e1 (commit)
via 9b0e8d3f85d77e8b6550a26c78db26cc36020c27 (commit)
via 8510735db8031aa929af098acfc00d713e758221 (commit)
via 262ebe3d52c9574e6502fbf595158c84c3862ef2 (commit)
via d6d8ec7884639f6b6a2a81e0125d8ac6071e6db4 (commit)
via f8ca44f9caf2d63a8d145e47038b2bdbd0766a26 (commit)
via ec670e9fa0b03f43ce6ceaf4acb6658d189e0461 (commit)
via 7ac37a54f05cc975ed26a77e204ffb650ccca1e4 (commit)
via 0244bf13b35401520517f733e060404d93d00b93 (commit)
via 95823b0e19a4b492f44b31ee4acdf223aebe2e17 (commit)
via 66a1e15a8265df9caee4eb9233a938c48ee37fc9 (commit)
via 16683c7dc3c408c743efba52b60de6f826069e97 (commit)
via 3a295bf0e723c0da9afb46a46d3858f66f6da2ac (commit)
via 0fda40c21f520739e206f536f934137608862690 (commit)
via 2ba98c3332a8c59db9c339b833ed1f7e953cf76d (commit)
via b2343e24a5dc6592a73f5bc2c7e1244a1b3ab9e0 (commit)
via 9719c9f35751300cc187f94056f12f66dc3a316a (commit)
via 1a414e7f0d3a05fe07d60195335ed971fb48bcac (commit)
via 740289938b5bf9b8355a1f9c497d307009d675bb (commit)
via f819c4a051f33cf505c527518103041b9ca0b234 (commit)
via 39c3e81e268fa547dc4c14e81ffe1b465f9d1bf6 (commit)
via e313235b5561e1a9fbd83a7bf9406f79faae6526 (commit)
via 27df982625364471e4f92c9c1313cbc8497b0b33 (commit)
via 9c7e953d1b88d1a338f2a290f10f17ee4721710c (commit)
via d1bbe8cf9458a1ca62f4f10502be05eb243affad (commit)
via 03fca7b8d10857c306ac18ad61faf312c32e7fcb (commit)
via c6eb3920ad323bf1b57c875bf5484058b84287f6 (commit)
via 170666a40a6a8a08bf1b2a38d12e3fe234fdd410 (commit)
via a5313c9bb00ec428d4281eec4603ff78ec07a676 (commit)
via bb9f607c8e81ded7555d64bd6b4ae49f99142dc1 (commit)
via 571b278b35fa2702b7fb4bbe22ed0fe10d966cb8 (commit)
via fda7086f43f8041dd1cf8a3b6263917994c171a8 (commit)
via 6f655029c11da77aa69313f03da6bf23b655f580 (commit)
via ca7bc2d47889bcd90bfbcd93dd96dab637dfbf01 (commit)
via b02bfe3028a72ef625c24b66bf90952cb7830afa (commit)
via d6511e61234d5fa2b10cb7749cbaede346e0f68d (commit)
via f926429461149a221bed723edbf07e1c272ace47 (commit)
via 73e58f3098534db6250da2a1b567636f926bb909 (commit)
via 20e9a9bdc6c209c579f8bb47af9cd3713cfd339b (commit)
via 78ff1829051402c0dd5b9d0403bbc8cdc13edc5e (commit)
via 2f88bc5487b29cbf90e5a37fc044fe33900609fe (commit)
via 17092bb129a39e066e704f52416132640eb042c1 (commit)
via 2bed0748ab1ed3e0941d5fb22733f775d757fff6 (commit)
via bfa522576637fed3725d5c73305eb23f996f0b0f (commit)
via 0c8e067012d3f11b925aac84f41927d3df08d829 (commit)
via df72a3681da56b7eac8e17524b49008d4b28e32f (commit)
via 8ae04bc41c256e89a835f8ce6ea81bd28031ae26 (commit)
via f3821f99170dfa0e8b2cce8f2bc2b5b82725c45f (commit)
via a1eeecf2f8118e2aad8a6345aa7c1afb9cce5a29 (commit)
via c06f4edb1ee40038369e62817ab2f0e90af6ee40 (commit)
via cb8f443c665370b661083f14a39788242254199e (commit)
via 5326f5c2a7fcd37e1e8d7da19406f81b881e1c99 (commit)
via 474167c5ce6e20aaea0c62f385c45d25021e59df (commit)
via 1819e16f1981edf6d40ac05be99c301f52aa4309 (commit)
via 30881d71694c070f39778d23d67a2bc1e83d5212 (commit)
via 814d6f6d926d135e0bf716958c7b3444101df5fc (commit)
via ddbc978b52694dfe231c4bc01b1d3d60a6ade0d0 (commit)
via 50ce4df6407461825005180cb89f6caf144bf2d5 (commit)
via fd145d2cd11a839fa70c3b22c05ef9fc3cca5a86 (commit)
via adf6d1facd14f16f4e40ea35d1cb3c6c3e81c6b9 (commit)
via 3ef99c7ebb23b7840ff11d045c4f1494de751ad0 (commit)
via 0cb0075c7b2c0b27ee6f0f2366d445b5b36546b0 (commit)
via 3d1568d67ff618c548ee057daf3878e4608e4073 (commit)
via 71eeabe55c1c2d8ed2c92fbf6f07fcf99832281f (commit)
via b1f8ac3c0d83a5d9756537357bc64cf5df79fd19 (commit)
via 18c4bab286ab5208532e4051f3b4da6664338ce7 (commit)
via 80d25c219b8a0b39f9365faf2257f26ed78d230c (commit)
via 53be124a6f0d69b8735024e2460084c4e2e8f097 (commit)
via 4666fedaed1f0b368bd98273f83c29a3fad5615e (commit)
via 31fac0a6f55225d36a942e98642966c65f1487b6 (commit)
via 3648b9a9ee1de844ac638d40391cc912cc6d5a9a (commit)
via c428db0f3de9e7c55cc1e7500d079a0422459b7e (commit)
via e6858bd2924245745027468af2b4d6a6d80d9e76 (commit)
via 6404615a5722d0788433a678003725363fa2a450 (commit)
via 5c61e39ba476fed01b41d07ff186b9bbc9ae7f12 (commit)
via 05baf20957c475a153eee853b0fdcc8dc0207078 (commit)
via 34d3c18fed988d330e36cffb527808d2ba471929 (commit)
via 0e9637c77c0643bf594f03d24f6a615f7e3b38d2 (commit)
via 862a844c638555c62f3da069474a6354ae6dd548 (commit)
via 4a3827c44b90b29ef57e1972504418912a2093d0 (commit)
via 8418d5abdc385601eb1f1ced465d5f9f66ac32f6 (commit)
via a27a122825711e4ca4a5d7e24ed2f6ac8f525d21 (commit)
via 7de9612071ad5bd745d4a43147db4c2c3c252549 (commit)
via 9ddc8b85dc89738af7d6b6eda0794d107d2d8d7e (commit)
via 60ce5bb082ea3561d8dec975ac1fc1b9cc55891f (commit)
via 2a87a93d489d01f182c1be1e59fe7fe44740d9f7 (commit)
via c2135d9dcf160367e3e4c878cf14ec0d2cdc2695 (commit)
via bd7cf179f34f2dad2e537369cc4e97d24f145ab9 (commit)
via bbb24a5d2eabafe22f8ff138762fb89dff480962 (commit)
via 10a337b807953521ce3c1b389ebc21be7eeef47e (commit)
via 146ccad83a93fa103f30a8e8c3afc89b08869b53 (commit)
via 5538bded1fe7c577df6ecc0dd05cd0424b8dc56f (commit)
via 2d326459b2c05621a4c51ea50c59b209955f457a (commit)
via f06f1e33fa1706318a85141323a0e70175fad55f (commit)
via ef4541b6ebe6254affb4203fc70d6c1b2ccf39d4 (commit)
via 0fd0dca2f41268198f0b703eff128cdc68cda078 (commit)
via 0d7b3d040ffd866e496cab5a66788258c1dcf2ed (commit)
via b05de26a5116861519e8e310bb47fee2fb0a9d20 (commit)
via 876dddad36fa1c69ff3d827cfcfb0d01c2fdb1bb (commit)
via 83d411990c88695753d5578afd273a363d7c6bd1 (commit)
via 00f66633e083ebfd31035cc33e82e8bdca4a492d (commit)
via 5c31b69356b119aa46526271f16f1669e8e04712 (commit)
via ee3f767141a1d25cb4525da847c8363c16125bb7 (commit)
via d7bd7126d361fc4c026f11b7f39e076de047d512 (commit)
via 1e2405093b16a097bf50ac4ee2123408a2efee48 (commit)
via d85ee643d632097bfa0afff7b15f3ae534955503 (commit)
via e73ce124fa471295253a3f594c26f4d7d5f85440 (commit)
via 2a3965d976ee150ea93139b7572b39ed36272dc1 (commit)
via b160f24685a25e2702a6c9fcb7ab02c172a5d35b (commit)
via 855a7fc823f79d4ac0d025b7140ff5c13abf749c (commit)
via dca6f3448c94f69d4b3054e30a701c605eb9674f (commit)
via 04f6565616eb6cc92ce8d50662e068e96448a573 (commit)
via 8b128286c5485bea624c1a90d38a5dcd15885ec6 (commit)
via 5249137d4c355cce90ee3e87a4d055a4734e27e7 (commit)
via c7669755876342b84677f5b7ca3f6722db557263 (commit)
via 98c3d6e25042101879c70ba5d2a0041b5783b168 (commit)
via 327220db08b644925981ffdd5c86efa93d2fc034 (commit)
via f5238bbf12854667a308e634a7d6654754417a82 (commit)
via 9d7735f031710985286094f6acd95215a6a7959b (commit)
via b95cf48adad8b7f03fdd3230d7761bb63309e317 (commit)
via a4ff02e6368846527e6d93f0ca48a9d64604b1b3 (commit)
via 9d7803dee836891a67daa739b0372694b8096c4d (commit)
via 630651c4b5f79ea24324818721baea4a43f9290d (commit)
via 105510adf25a9d821761e9f945ef2cb534f90607 (commit)
via 89830508b2b76e9ec3d650eb7ed1c71c83985192 (commit)
via d1fe3c2277958e80269936d2bf053efaa47c9bb9 (commit)
via 4143d900e0314b98d12f68ee554f7d6c2c4ff486 (commit)
via 370e01c4afa7d62c041ff9b18b54e2502f74cdba (commit)
via a49e63847551b2a97603b0ba19fe7ce60f062f59 (commit)
via 189473cc9ebe37312017ca2e53f73675c9dd4c8f (commit)
via 8aa50442ab92b4789a8f93532c5aa40e4fecddf3 (commit)
via 57f25bce5e8834d88a192080a25219aec7d7f6a1 (commit)
via e8e23506129fed01c2612c64fac137aa78c9a8dc (commit)
via c45740b81c294acb81667371d37730592d558b98 (commit)
via f63888ab61f0ca4d1b5c8e5a5e25030725682355 (commit)
via 903e568a65b67cd18ed1976f26abc501e3e81d85 (commit)
via e27109078a098685e8189bb238b9bd37abe29b21 (commit)
via cb7380d256c20b2a7cedf822c4394e6485b1dcc4 (commit)
via 0bc54ed4c93c5dca037336e0acdf4d00e2fa84c1 (commit)
via 2a975aa877d29205f5e3bcb56ad13342c4e1198b (commit)
via d1ca5308e995599a19576e0bbcbe8a8818a942a4 (commit)
via f7307ec35dec9eb47276539e08dffe146bdf6153 (commit)
via ef4e924a5c5e15a661ac18e50a600a2cdfddcbc3 (commit)
via d68dc4d27e0d5299f9576804959aa48eaed24145 (commit)
via 35c38a1ce840f86c12464ab740752f8e0947807e (commit)
via 664e21290a56f67abde9e009a8949f5324ee9350 (commit)
via fb67a021e7e1bb430af73104807f92cc25adc6fe (commit)
via aa7a254d23f202a19d3ef81d8073affc77e29b38 (commit)
via 794c6a90f766a992c88e8dc8a0055a18d897069e (commit)
via 9cd5601134845dcc947b77d97ede00a0e104ff56 (commit)
via ed0a8921c0f6a6afa478fc77de9202fac3405683 (commit)
via cc69b49b0edec3e72079ea5616d72aabbef94b5d (commit)
via 0e1ac4ea6a271aacde744f4ef019f80ef976a162 (commit)
via e2991a0fa50bc3f397f45a8436cb11acedc71c1b (commit)
via a267e3453f6c43e5e16d8fd77ed1740972558562 (commit)
via 747df1ad8bd3400340ea8d3787e4f37f8717300d (commit)
via 2a6cc8e09ea0ad28124dfe984815162840adffbb (commit)
via 1d6bc0df181050f363b1d33db11f3b88f6e6b815 (commit)
via c4c16ad68276522bb387371e47333ce499657df9 (commit)
via 4241e2c99e753304610f1309702fd301852f619a (commit)
via bfafe1b0c8504e8016c897aefb95ba966d81ae3a (commit)
via 4dc0665ccc5e8ee17a84684c4fc2bd32f38a0440 (commit)
via e8b46f3cc24427c36b773c8d6c8872390b880f17 (commit)
via d9033a4f2abab0c825e76d39625a5a9f2d9ccd2f (commit)
via 0b45f0d8b63f7b7c133a9ffe7eb2de041aacb24e (commit)
via 34354325b82054d82b71635e19cc9cf640982feb (commit)
via 2c38f9fd090b580d2880371597c3aa8d02df69b7 (commit)
via fee207e8bdb780389ad385bd831c8f11f0793ac6 (commit)
via 889102f6fb30682c5bd6269c2dea29dfcfbb6f2a (commit)
via 4289ab5b5f070baab9cc73d420b7fef87afa8f35 (commit)
via ef4c5c1f2f1e81821a1bd56b5d1cd1cbbf3af623 (commit)
via f421551018ebf25f3a9896abbeabcf6918d63e09 (commit)
via 0dafa5e4eebaeabecb4cc8169effc1a55af6d83c (commit)
via f369139b32850e2a32e3dc9faf0fe2deb7b2b996 (commit)
via 47bdbc124e1cc13415e62c07ed0cb3d1195e5291 (commit)
via 7d204ac507ec05a8ebf839c8d0d570de4c412931 (commit)
via 280cdff3140a3335120b84759170bc0cc28372e1 (commit)
via 1636ed0f9decc15beecc685c1002bb41a8b109f7 (commit)
via 06ad346e9d10062f7fab24f7526dfa69f941668b (commit)
via 6cb3c6b6c4c4ded544ddc47905243d3d0ccb9694 (commit)
via ee6f8ae6f983f2beb1afa94f9332f9e244fbbb9d (commit)
via 361c8ccc7476a35a6904706402dab0a7c05e2ea7 (commit)
via 55b4a94715b6923dc2ecd8ccd64dbe96f42efa98 (commit)
via 7feb61f70dd393f9fd6256fd85abc8c228be6edc (commit)
via 8ce4d052feaf61c272a50afe2ff703e35cac2a64 (commit)
via 1d7315ee9bec3d9528da171d92fdcd9fa92f4b62 (commit)
via 1601c616fe494b50de98cec4c4bfdb0713ce7246 (commit)
via 84ddf9ba3cca1b4d48da5e828d32eb394dff3c4e (commit)
via 31a78788bd0db6957bc754a078c880d6f6b5f23d (commit)
via 7e3cacdb0ecde219278c8297395b4f0f2d67ad2a (commit)
via be3b436f583b9def2d36589e67c8a4ad9281d725 (commit)
via a631c4003a589228572e10a0bfcd261f6d385c78 (commit)
via 1f0ea6338e4aa35a70563a340657e9d5f25287a3 (commit)
via 250e9e7b2d4888b647312d416609d622b6d91b70 (commit)
via 71fbe4a825139399ee1503e4c27da336671f1b00 (commit)
via c793138209cbbe48e8925fd9900857e41cffe5d0 (commit)
via 8f453134d75269f6c98c2c55dba214f2451e008e (commit)
via 6b9d4bc8796b0303cb18582a811e33de21f7d930 (commit)
via 8c2b734ef1b597a3df3da34ee9e4cca4d7dd2662 (commit)
via ab23fe7539ac4cd32334be4ad52256daacc9262e (commit)
via 40cbcd8e7e47308aca555a7eb25160c64bd1e21f (commit)
via bd04489a431ccca59c746dd57f73407030f7949a (commit)
via 85593ba93885fc5404dd7b2b416521db3fbd2738 (commit)
via 4a72c529bf18b722823f2fdbe26ee9cfafcbe382 (commit)
via 6ac2952366f18defadeb4eaafc30d23abdb3d1d3 (commit)
via 0b31876250ed4064425d5713097522815abe54d2 (commit)
via 0211d4b6d3d72751866631bd1efffb09831fdbc0 (commit)
via b0b03cc363c8d3a3e3b7633280928d1fa794f96c (commit)
via 1c849c7e7a135f61c71d4b619a0ff1040b7beac4 (commit)
via 01fc90b3fcb1804a33aa575722ae47a925154c45 (commit)
via 3d157007f6bec653f524a4df5e4e69d825df9765 (commit)
via 1cf7975319b8cdf4a02d8a42a451bd8efe9a39b6 (commit)
via d8c489df3b0ecc6e0b99574b42df99395e062a97 (commit)
via f9e02b0cc41ec2091624c74e456824eedb80ce23 (commit)
via 3047a97c6f458ab10412d10c13f7e70f225db40d (commit)
via 4b87212c41670c6bc7f44a23cb592f64ccaa2eb7 (commit)
via f85e73087e64922d29e6791d50be34f5f641b734 (commit)
via e214ac57f377bc92bf2b334ee20bdfd498c84e59 (commit)
via 6e40390d2696abaa47d5529ba76dc54beac31239 (commit)
via f9ccc6efdfb8ec6548e5e1d28a122f5ae5fb3f93 (commit)
via 8b2c139778d086eaad39eb9d21c6fa6b5e854947 (commit)
via 5fea10a1d71ac153b0f4bf0d670bb748b04584c7 (commit)
via 8799e3a689b1fcbbb0024486483c950db278f983 (commit)
via 30d0ffc698aefb825de4c62e30751a053ed50117 (commit)
via cd37e4bfeace8790e7f25c0172c2657cb4cb685c (commit)
via 3dcd88a884d18ae35979e2bcf211c42d4a5ef7ca (commit)
via c2d64a2484e882cd07b3ac7f2134eed2d58b12eb (commit)
via 000fedfbfbc90f0a0bd336ad2f10722e539bef65 (commit)
via e88dabaf4c234a52861fc3a1b2a85363c4d5da15 (commit)
via 83ab4a681f4f12c6ce2353a558d2b9b5f3a0f0b6 (commit)
via 9bd9ceb75c9b6e7bf92fd5f53c4468cdf795fae1 (commit)
via 1fca089d622036e21db40e94f24f85e375969e5c (commit)
via b425658f2fc7d927b2c8b5b4e4ad4843ec83dbc9 (commit)
via fc45135fcd0ba927b43e70ca4fe216c36d7a3021 (commit)
via f9c1ab67ba7f2bccc92e219648d4676550cb4318 (commit)
via 2c6bf97b205fcec2cca80f51785cac6699947c2a (commit)
via 5d2a6d4842aea02cef845d6449e5b76b6e282692 (commit)
via 9f51031a00f0b6abf60cbbb1dd6818e60892d40e (commit)
via e421d1734dbb5d2e7d365633bb5a4ecd1e8dfdcd (commit)
via 6a37993df725bbe699fa01b92810c28d6b80edfc (commit)
via ac5bef80aa19a944cfe4f659d26c7f68ce8c2e61 (commit)
via aeef8f3a5cfabad1edf4619e325feef811742ff6 (commit)
via 39f53ae4e22333aef1744d79803e3d9b46e57e38 (commit)
via 92a074bc18a838aeb0ada8555fbf749f7b150c82 (commit)
via 09037027389b169f65dd274106d2c065d8ec66c8 (commit)
via c8418d49768593fa13f63f1a1b7e0125ea792d27 (commit)
via e28035d7adcbd83eca4f5b566785ccf7bd2915db (commit)
via dd8cee65b296d52cf5a78e04979f8b7b3f4b179d (commit)
via 2c567fd720180db894b204dd518b50297712cbe3 (commit)
via 6539bfc118a46812e91b37642e331a5e198a9412 (commit)
via 7fb35aab06139e208b006c55977cbf607dc58e28 (commit)
via 94100bb3d16aa9a0f8b202800fc40d2bebdcd0dc (commit)
via 5941c0d877ce89b5487b9675a1e28c35d406ab95 (commit)
via 016689fa7c69b5a82079082b3eddf69a55dad538 (commit)
via 3270a47fa821da9dc57c600a14bde581ff397431 (commit)
via 7c714b836e7146cb767861e51cf2c990e8844998 (commit)
via 4d441b043749c5eb09619533a52054561c7b98fb (commit)
via 4d3c1801b7dccf5f2938b2a9ddbbb88da0e32e96 (commit)
via 9bbc3224fff220f88caa324d6232713ae3445e12 (commit)
via a3e0ea84510b67400f203598eca7b91286ca84b5 (commit)
via c58b35021249095b2a09063af856b0823365e177 (commit)
via 4665331502c7a6169e990bb1358278bb798f9f3b (commit)
via 18d3cccd6a471ce4b75460836730ed0918b36439 (commit)
via 8e26241e1ca00195d8361a982888875fcc70c7bc (commit)
via d54349d2a6c38b64efd483686021e0d2fefeb4d6 (commit)
via ba2f082495c58665aaca27e5714e1e65d2162f51 (commit)
via ff7ae9088d754aeea29fd84be6cb3c1d6d307bd3 (commit)
via 2f630f6c1d89c50b83bd3b4cc88854ca6e95629a (commit)
via 11155d3c39e34f1be62beca84eed6cbe2b75e8b4 (commit)
via 9ba98b63d72e4e7f7041039815f161e946827b74 (commit)
via 0e5070c3562118c6573430007b282fe71b2915ff (commit)
via 6795eeece9ab889cc1698e3fad6ef53100ac49f8 (commit)
via e77169a7f4bb0097a8e1900b931e78abb4c82070 (commit)
via a16101ac8954c71daedf435af52da42e681510fb (commit)
via 8d99b5b46cdd9bc80580716e63e095f92122ab97 (commit)
via 1ff1a8e355132fdbb4ab1d7da215fb68216418be (commit)
via 9e552843298fb88de2bee4ad3b8944a3205a785c (commit)
via 992a698b0a9def23ffd2067cc18545ad1e1b8391 (commit)
via 45bc8f4898c3b92e6bf6ebf67df3833cb9f83ea8 (commit)
via 3f50b2dcbdf87b5c93437357cc581c0262188967 (commit)
via e5e0118b5048dc99265a41419de1c98a6ebad586 (commit)
via 10856af027e1d4d2fbf1cd28fea0135cdd72b1aa (commit)
via 64fc8e74d9aa822e07ea129890878b709a2d91de (commit)
via 9236de5593853162f502f8fd0af08dcbd785d013 (commit)
via 3bc7d52764c7dc6d7561e26974bdd515b9d7da98 (commit)
via 5e751681dd3d103ae4a4a2b89cd4c65b2b5620ca (commit)
via 0020c0d006d1149f2b738f2c82cbf61d7126dce6 (commit)
via e1c1e7e95d02bfcff186c7c867c49d4795edb1e2 (commit)
via 4656b73ff91824bf9d9b515559fe869546ae4d5b (commit)
via c656b1aaeb1f696dce4cafa37b18e0f3da0ea6f7 (commit)
via 6c5267359a374c6fd66702a0eea44d24becf604d (commit)
via 56657a8f65a89dddf275132a8d430e677a50207d (commit)
via bc3d05d7c40c40165a1f12b41ce5ab4fdb393f24 (commit)
via 5858999045c59a4ad6baf7ebbba77b086f541d91 (commit)
via b7430aeb8cf2a57e4bbccbf620ce42d45110793d (commit)
via efb3938f7c5b5cb823eb8777f12db33f2e29503d (commit)
via 16363939b9b30feccad515368739152c416c0959 (commit)
via 53fae929866a0a13ddb5b2a6f28b14e3be6017aa (commit)
via eb045d41e50c1a3fb0a232b7f47dcaa4921e556a (commit)
via 47ed766eeaee877108e0a0ba4d74a5c2319d65d8 (commit)
via aa1eb64332158807cc850c7d1b4ee38c96d48ce3 (commit)
via a9d46c03598fe182259848bab59639d140e033cd (commit)
via a7b40becc607563b42f608a6a6531133b2b3d5ea (commit)
via f7a4db959de4a379c7ae61fe68f32de1633e558b (commit)
via 1dda547904769b1b191c26657f5bce59c5bd526c (commit)
via fe410c49eb2440f0f701dc800cf33b99cca57312 (commit)
via 0a23bd4144a5519774b0f557c8d8ad11ffc3225e (commit)
via 236191e9c9e2dc8055e0eb83acab4732f884cf23 (commit)
via 31cc7826a87870ff95a1492a5d83ae8c5875985f (commit)
via 2ccab7b59323a75aeb329abdd1d600bb7d4072dd (commit)
via 2666acc24a70086e72312eebcdc1d856fa72f3c2 (commit)
via 574cdbd739e9ff29aead16322fe4876993ad4fbb (commit)
via a666d527701c528fe4ff584cd567693b43a1228d (commit)
via c44ca3afc17ccb58aec4a36293c7546f5ee0abaf (commit)
via 3d4b424c364e5266c8ab31694dcc8ce357cdc257 (commit)
via d326f2e6308ae6ea07295046332bc2ca78dffc3e (commit)
via daf301d08beb0e4c3fbe334f768ece4040105b8b (commit)
via 8fd8670301c8d674ac603fbbb2ab413a35155042 (commit)
via 41ac517b8b58d98282432a9d0704b1265e4d952d (commit)
via c2e7a4a948455bf8eb028feeeb3f870655ef290d (commit)
via 3f8f2aff6f20be461b1f303ca9bb654a39fa28e3 (commit)
via 39482b09e23d2803062444b495e81bc0b3f8f9be (commit)
via cc743fa4022fc775eb845b86e2b484639a7bdaa0 (commit)
via 10b5bcba7a17cb89003bf14f6d06566953c5f9bd (commit)
via f1237d48b934febc55671dc6e2b6d2b7148d8018 (commit)
via 7dbe179f9501c06752d232472a3cf06c2397f236 (commit)
via 925f2b7278f0ff5945b039d8050b8560dba72043 (commit)
via 44d113131bf8b3c7d1651d1bda99f6fd7aead876 (commit)
via 5626cb4a6e01f4ba8a8f6f53c858ae9ff513eb3c (commit)
via c651d69674202e1bb521db9dbf49500e250228ce (commit)
via 96b697bd5f8d903c0cffbc3ea98f2563450a1912 (commit)
via ddd6af9ca9fde1ea231c42ead81f723dce4eb728 (commit)
via 9dfd8a132d57a5a79bf55712ccbb7e6fc80597db (commit)
via 99a3c8d2210f97797185641c08f483d8947cb00c (commit)
via 33ea36ca469b26f39c9d490e6c0e5091c1efc00f (commit)
via 11bae1fde0abb4fd054f74599939ce5a88f673c7 (commit)
via 0d4eaf3bbfcd0e5eb8bab3c25f15a934ec4c5d73 (commit)
via eec8c167cb07c52b0372a519709f8009c0757fa3 (commit)
via 7545efddb6f477702a5b91c5d57d149fb246aaa7 (commit)
via 2599184e887a03e25259df48ae19f1f696da0f88 (commit)
via 8eea813905fccc25bac11f00a69c704913231727 (commit)
via 1121bb7fe686b067b51eb5a3b4124493266212e7 (commit)
via b8301b0dd57e3a77871af3292bbe275ae92d5d3f (commit)
via 2b9ac92b7e4702857c827b58739d321a23a02fe9 (commit)
via 1e5f09a594a1be9e6dce0ce7c311cab27bd2c3fb (commit)
via af61568cbe1cf224f4fb872d1dd030ac160f96d1 (commit)
via 49ca24c16f523880e103f506cac0a526acec22fa (commit)
via 0dee0cbc521c9a765aa27dd39797dcdb4820cb8a (commit)
via 0f25fbe793075926ff20d76d0d88515831c07dd9 (commit)
via 1632e98a05f8b50ddb7eee75cba0645ea099497b (commit)
via b866e07d700d9c204e81d5d5aa9a91adead5ea86 (commit)
via 80c41c99fc91c9818dbc7c5840b584de4d48ae23 (commit)
via b6ef9b00ad41bbc7e75f0f7245c0a7226152c6da (commit)
via bd1ce540d48505e5eb216cf47f4807946ffcffc3 (commit)
via d59901bf1edb4e4cb620ed4bcb0ea5134e25bf31 (commit)
via c50f92c50cb77b879ed247d789bd944f18e3f95e (commit)
via 2eb6da99d33264aa1cdf95b6c6a848fe21c6e4ec (commit)
via 17e540d0deb735c66e3905a1e42a4e175516faba (commit)
via d021ed55039d2df71cbe8546a37439f186beac85 (commit)
via d9f7ae0ae21c18cdb2445da822d0ab92815880e8 (commit)
via f1c5b65baf5a01a6108e6d4e295d2936426c5110 (commit)
via 1a381ab963d8b8c70a8b8ffd05afa64f6e06ebb0 (commit)
via 6c0359720c16f91070142ac9ce343622d3bf233f (commit)
via b8ebcb3c219adab1671e57ef584b185b271df72d (commit)
via c02f2ce6a4d1ab7aba417ee786c0f2d86d05b6ef (commit)
via 5b45f8f3518a5c460cabe692fadc1b1a751b04ba (commit)
via 772d3a76710d0419d4590047700127955fa4dd58 (commit)
via 3c668430ce18b9a9f67900be37dda47afb0ca0d4 (commit)
via c2c1232c19ca089f42607a4fc08971c2187c4125 (commit)
via 9fd15b31c4e6e2c3af07f8f4812acdda09ca5594 (commit)
via 06cdb76670763fd60f6dba71e385a98867c87ac1 (commit)
via 0bc3d4936be6d173ea7dbb535360ff588bd3ad11 (commit)
via 04ec835ca132cd04bba58587f9c17e5e4d70a3ab (commit)
via 84ae475d556ca807574007202eeb6759a3ca6638 (commit)
via 5d314e6454b740df1f7b32f8c91493ab05993a7c (commit)
via 321533455c39d687b32a9c4d09416c6752b89c96 (commit)
via 6205c8e67cb639b2f3b5bc181be027d1ea53685a (commit)
via f70943ca40d5107cbc0e0e8d198ba630c48f3ddc (commit)
via ed4742d8d47260cc84d40a42d0d117fcb03bf969 (commit)
via f736ac4d9735600af24d8b71dd7b1fa40b4b055e (commit)
via 04978a336380c8e44ca536450323eabb5d869542 (commit)
via dd5f5c70a722ce384f525c7a75eaf11065a350c9 (commit)
via cef31d7bca20b76132f1a9113dc6869c02beedc6 (commit)
via 66ed5248ad2acd02f092407dd99fcca282ea396c (commit)
via 49a411254844e9ee9594f5a928513180e94c2e20 (commit)
via 4726e71d44cbb15109d98de2848c3542072e33d4 (commit)
via 4db82cfee4c2b33c7069395755bf79e1fa1e798e (commit)
via 90338cb26760c808d4c22baa26e8bcd63c05db29 (commit)
via a989f9ad51deb69d4c1822c6fe22e27d1e3c8e85 (commit)
via 0c6551cf1325453fb612f58d4759b50f1fe51118 (commit)
via 8b6a103bbf970eb09bd496d7b0a4c0f0b4c318f7 (commit)
via 175032e07b929a1df3d7eec30dcda465f545d2c7 (commit)
via ed6e58a45c526528052de51f6a585f731b9f3907 (commit)
via 1b70d95cbe73cdfdc9a54d15a73b6838ba8bc4d2 (commit)
via e0afbdaf059ceaf3a1897b04bf4466438824b262 (commit)
via 55e101c365193a5f3098f9eb75c5219c2188d50c (commit)
via 01229ff71038431d2e60a278978ca81a614e1091 (commit)
via ba38697528df5aee2525631fbe2dc8af93bd47b6 (commit)
via 38e54b7d49ac2040a19977724aecb9af019050b2 (commit)
via 93b0cb9b7e688a7759f64113532dfa3238263d8d (commit)
via 99dae4e56079956ceeda90ca6b1e771ac33fc7ed (commit)
via 4b6e032e1b148f2e67cfbc875fd59abca1ef6e6f (commit)
via abf64d53140cdea8becfc932829fab348f35923c (commit)
via 92ad3a293a6cf727ecfff77618be4ad287ec95cf (commit)
via 4db326a3ed9019020bcd5c3a2a6c80ade303f2a6 (commit)
via 2dcdec1191dcd579bbc915aca82e68ca4c7a264d (commit)
via f59696cd8b0688b074548cf1941172e774b05b2d (commit)
via 1c300f091f244070950cd7c849a718ba26210bbc (commit)
via b08b19e8c33199ae97acbb33528daa56d01b4225 (commit)
via 2b746cb37980d455bb3541e539c3f378b1086b8c (commit)
via 55977abb40f21e2dab5bb5c4e071d8d1d4f857a7 (commit)
via 7bd5347d55fa747cbc3a92a61c512adb79ffaf39 (commit)
via d27e73605deca1532a7663a29ba22037106fbeba (commit)
via 436e23c59a7f1e51c1911d6033453d631f34548c (commit)
via 9387bfa5938aa45d7e6d1d4f01fc8d45114201a5 (commit)
via 6cdcbcc195eaa5143a72c6c9b6aba15c0e30081f (commit)
via 476532fac69e8c5ff1f16c8e851837f46a81cc58 (commit)
via aab1dce800994dbc5242f74310fa521c7d4e09c2 (commit)
via 9f9e3bea5e3ff846793fafdf5ebcb530d031df49 (commit)
via 88e123ddf74b117171f8bd768c02f7a4e649f3ae (commit)
via 63ef7350ecf96176050f247f954f8bec7c19d0ae (commit)
via 8068cd19008a18d491e53c21d5c2077de0a38bb8 (commit)
via 589d3e8ccbc54bcaf6a62d4ab9a900875eb01100 (commit)
via 0484a9af6e10654422a7649ef73aaa1faf3200f4 (commit)
via 03fb777e1d4d46d38308dd1bab56e47090e0c41d (commit)
via fd7ec30674dc712e70d1dbf3735c03e3d43ff432 (commit)
via 9eeb2e1bbad26d7d19913c3984d85cc52e59829c (commit)
via 541409402036e8692ad8133982d98693afd7d9fc (commit)
via b3dabec63a6340ea6b62d908245e1cd3438898fa (commit)
via cc9542e9c186c462df876eb1bcf4e6a986ed4acf (commit)
via bb4e15b9f4ba8017f10e2c4eafa22d36e39a5390 (commit)
via 06af19a1124b9f278ab14c37b1e6bed14214ca91 (commit)
via af104f8c5f1e98c864f00cd7ecb1ee84dc53846f (commit)
via 15a372cedb6e53fce2d17c2acf66910b4d6f22f3 (commit)
via ef065ce8d656f383b691c2cd62c76c0748321d68 (commit)
via b869319d1dc8ae68de7994e80d8f80a0dee51ac0 (commit)
via a9ae33bb47882623c8b276eeb78f83f212f85ad3 (commit)
via 4fa30fc051592156cf6e33e1db7da5aace1373e4 (commit)
via 7724b20e9a9bfa9154f7242bffa08d8de5bea4ff (commit)
via de443469de325d2dcf6f3967251068cd5e4f2c84 (commit)
via d2907c9d7959f4e88daebfb6685e714d7e971526 (commit)
via e399dd76b0e33b04da5b7e8392bb546f17adc6fa (commit)
via 10d63d385ec219377e49177de3124809ebc0a540 (commit)
via 6fc526bd21bad8672782139dbc082e86b13a8eaa (commit)
via 5c4323b11ccea3fb8e5a140253cd7b539dfa48e1 (commit)
via f159ab7285fe2bd15400a1d04785eba3161a0bff (commit)
via 105dbd64f29c811118cff4104dea89c3c6f6084e (commit)
via 27ae32d2e7cebf14daa5e4cdfa3a5a4b813dcd76 (commit)
via d9a108415b8b0a7c1b0fd34e1b9985d0f36af56a (commit)
via 9a2217a6bbebc708d0c6b8d6dcb91fe20cbc6a86 (commit)
via b8bd8e396403abb86c1c9385b739cce9575fd619 (commit)
via 547034d1e3d96fd70c747d89f9d465138e55db3a (commit)
via 75ee556a9967dac62b4538f5fddfbe694c78d1ad (commit)
via 960796d23d4c47d83beb42797cc899fcc9f7a574 (commit)
via 13d590631b387a97ed673d97377e069fb458856d (commit)
via 1fa3fb25d99ac15ce8a3faeb4debb5972328f263 (commit)
via b4745890f5277e4181377208ef924ac8cdf8e86e (commit)
via fea9f00597a76e5c91f3f06ffa3ddf89032a986e (commit)
via 320b04935494bf0722c2862309222ea309ab5ce2 (commit)
via 3affee9bc0d714c8d6c7bfe4f770cadd98d99876 (commit)
via 0d2cbe26df8bcb7f6cc84e3de7a0ef2263e69a7d (commit)
via a281c1bcf5e696e7e945b7a825220ea3c562722f (commit)
via aae60143cb4079243629cd0c5d28be8f45c02b49 (commit)
via 9682ef3971574a6c4d9668c12971b7018506635d (commit)
via f336ab34a7e648c59c2725bed7959b3553529b7f (commit)
via a656c138621ceb463f8dc3795a272d34373e7ef8 (commit)
via af87738e069753c209db476a5a37f450764e9440 (commit)
via ccade868a962ac0f687777c0c5b0f3680b6384ed (commit)
via f9623467220d97b902165c34f86a30940ae79dac (commit)
via 029b296f259d7b3e90dbb7250bd86422cdeb4005 (commit)
via c7e96763c7fbe1317a23b78f9d7cf2b04383f24e (commit)
via ee64afa019d7ff3d6fdf15dc6cedc3d676748a2e (commit)
via ef2abc04932ef00793410f526833e863b3f0d0a4 (commit)
via 7d370c6d10e4c5f4dccddb01460201bd13f366b3 (commit)
via d91ddd752f1f48dec7ebf25004bdb9b4c2e26261 (commit)
via eb78080080e9357526fa23e08cd33c924530a4a0 (commit)
via 4d56bb8b1b49a48b2d9f8c06e6c1c566f739ebfb (commit)
via 286a7152f2984ca4704b4174a4c6cadca793c28e (commit)
via 1dee705828cd68a9d1ba84e3874da226fc6ee83e (commit)
via b9dddedc96e26910a31bef73f8fefaa544fd532e (commit)
via b4c37949dc19a383e199ff3a7992526dd36cacf7 (commit)
via 0b49c3fd2e11c63d0b778c2867499bfa7ec6ae1f (commit)
via 76fe65a650d2fe8737956942edf8e6dea5da896a (commit)
via 9af308a5f8a7145f5a2a6457beaef508d56ea4de (commit)
via 38f5bc5baff1f97970e3430bfb90a61075e7a3fc (commit)
via f63bf8199f61a2dd3509cd68eca412770eb56885 (commit)
via b0846efa4ae2813488680cd793516ec3ed8f4ec7 (commit)
via d6ed864b0ae99a2791faf80be73df0b34fed0333 (commit)
via 316f1c6bd42467a6d513a442e25a5a7989d92662 (commit)
via 20eff1df7dbbc0ee551355afec529f0bb725d4a7 (commit)
via d346426d4d60190c867824fe8119d6943ca5dc40 (commit)
via 00eb093580575ca7066b51e0624a7a1d9d02faa0 (commit)
via 0986b4e64f46f23a60a6d1bbd40a85f6a05643c6 (commit)
via 7a343496ac6dca86c1e0e51d57591107689d6ca8 (commit)
via 2140cbf244e97dc1f94dd22c47d296b420d9cf6f (commit)
via 0246ecf1f56c95cdc5a736a7e27f033ef0c984c0 (commit)
via c3ad4f3498453eb7789890f121497fe5c7637e01 (commit)
via 9114d45e537f2e3646e95db40275a4d76ba5834c (commit)
via f92c5524603e483b16d2d9306d4d11b0b23a0834 (commit)
via 5572a73fdf5e64ae2b9e4993aa5d1c1008b6e3ea (commit)
via 61fc497f2cdaa5a52bb37d203fc816a7d8430027 (commit)
via 3eb108acc93e46c13b4c1b4479df35067e9f168f (commit)
via 6b9c146ebce7bc4df0b69df88bc60904d3ee597e (commit)
via 73002ccc1416df272bbe0ffe439a9b66df33c84c (commit)
via be265da6d4313f6408a84ecda425adc17b08607d (commit)
via ecf330f17797ae47a8678121386178963d4e11ac (commit)
via 3bd7056e8683add7c6279fac5e7741d9af3b736e (commit)
via c183d6ddfd14d0c1a6708127f78558dae9377aa4 (commit)
via 733655684ae4aa7b9267710b6cfc7b199843b12a (commit)
via 4b7fd4490ca7f9add32a49387cf87ddc03c94958 (commit)
via e50442091c69fa6d52353555140f2c814c34b039 (commit)
via 638f8a810c056014bed7b4bd303db7b2de9e08ca (commit)
via 35d35f49ed56d06b2648fc68ed313f69e983f773 (commit)
via 3fe9fec711a4c86cd12f446cbb61551adb28e55f (commit)
via 793e983fbe4f775a6c776ce0b2b3b7b0d245bf7e (commit)
via ddc49fdd2b2e32fd009f1981433a904a2ceba67f (commit)
via c67444734d724ee93c9e951a48da81902663eb2e (commit)
via de394a55c6c7b107b20661253748ea984e748d0b (commit)
via e26ebaf981dcda084a41fd5773c725dbbf57636d (commit)
via 82d480e924e6a4975b885d3a6c5100b2d4e9bd58 (commit)
via 61c4c034b4e332826e2255e5705cb5e941dc0006 (commit)
via a6e80cbb8829f29ac73192c2a1b0ce6ac5f4419b (commit)
via 99529740bc3d8b043c77c1e9733060fcdae2c7b1 (commit)
via c7ba3a5df00a3668fa5dfdafb0a2c500326d36fe (commit)
via 7e48c8913c1c00e783f8dcc9f536fa2bd89e640c (commit)
via bbcc946f33227973a8954179a0a386cbc010dda6 (commit)
via f96412cf23909df8565d2bba524bccd3c332d77e (commit)
via 3a9d58108af35baf4cbaba576ecfeaf6b41af9cb (commit)
via f462322be590be24f07772d46952c6614d806370 (commit)
via bbe6cec3034cfba21327aff26b37bd601b73ac7c (commit)
via 719e576051cdbe6f5950f666248c0a64aacbd061 (commit)
via 478795477985abe1f0f32caf2cbd4eae8b2d203f (commit)
via 5cdee47abac7b966996e1eb0faa368b83f006970 (commit)
via 9d68bf115cef67a3798da716c33c559ed7dc1b07 (commit)
via 541054e88dad90258e583a726b5f63a2bf811138 (commit)
via 5b71f47a4d144450174433fadd6f44fdb69815b2 (commit)
via d61916b11041ff97be8797a19ddd56b21319ba6d (commit)
via 003b046116f5747f2cdbfe2799e4edfcadc465cf (commit)
via 1b232831c4fc7516bf5cccf9131610a24a4d407a (commit)
via bc844db311b1344b3f1306e57c93df170c6c8b62 (commit)
via a9523bca32dcb49095d8e1f47c407ea20a930582 (commit)
via 831ee13c3a2210715166343054ab966bdd3748a7 (commit)
via 139302fd5ecc9e4d4b39f99c99ccbf2f51e0a78d (commit)
via e88fdbfef65b2f0e297cf05ce5191ba49035d493 (commit)
via 89b0e1c31ad719100b01073d359fd454c75ac387 (commit)
via a22a8338f2d5b1c3659265fad3336aef30f93e96 (commit)
via e6ba0f68606cf6050ecdb890d6eb7b7bcd2dcbc0 (commit)
via 6331247e7ac78a4228992ff8b707f3a1709eb8e0 (commit)
via 31132ffbb96b5514887594ce01bd758442eadda7 (commit)
via 63783453e6d9ea02c5fdf1f0310daaf80230b9bb (commit)
via 25786356d321efb88af4b71951589b1b2776ff87 (commit)
via a6d7aa570e8c4ff1bbb5891c48c406ef1d5a1529 (commit)
via 0d45cbe27b77a6641fc5c0ea2d3fe5de93c8c6af (commit)
via e4b6f8528e38e139ef15638ace6d2f524e4755d3 (commit)
via 10f9db8ac643a1536ffa10c4cb8c1f685192e3d6 (commit)
via 991fc862310c917d9b70bae00412f30fa52c23d3 (commit)
via 6aba0e8caddebf916794193ba28a582bebb68b64 (commit)
via 6901797894781150c8a6ca0552a91624d18eab0d (commit)
via 70ed84ffec97bfb04591c01304b0a413c481dd61 (commit)
via d371bc3cbf6c733aa5e7c65a1838088e3ce9102b (commit)
via 6ff87d41e6d23c296beeaaae3abde1a5311e9953 (commit)
from 0f5b0542513b572959e39400bae42e69aeb1a7b6 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 4ad6191d53207a8b2d4c0c8a30b18119daaa5fbc
Merge: 56a2e5c346 8e913832ad
Author: Tom Clegg <tom at curii.com>
Date: Mon Nov 6 12:14:51 2023 -0500
Merge branch 'main' from workbench2.git
refs #18874
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom at curii.com>
commit 8e913832ad289fd28700f4081046b7de48688130
Merge: 5c43d68767 5b30fab055
Author: Peter Amstutz <peter.amstutz at curii.com>
Date: Tue Oct 31 13:53:33 2023 -0400
Merge branch '21067-process-panel-error' refs #21067
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>
commit 5b30fab0552f623a35ff5b89b90dab82dfcee258
Author: Peter Amstutz <peter.amstutz at curii.com>
Date: Mon Oct 30 15:24:39 2023 -0400
21067: Fix bug deleting projects from shared-with-me
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>
diff --git a/cypress/integration/page-not-found.spec.js b/cypress/integration/page-not-found.spec.js
index 4df4135c87..6eab27c827 100644
--- a/cypress/integration/page-not-found.spec.js
+++ b/cypress/integration/page-not-found.spec.js
@@ -45,8 +45,7 @@ describe('Page not found tests', function() {
cy.goToPath(path);
// then
- cy.get('[data-cy=not-found-page]').should('not.exist');
- cy.get('[data-cy=not-found-content]').should('exist');
+ cy.get('[data-cy=not-found-view]').should('exist');
});
});
-})
\ No newline at end of file
+})
diff --git a/src/store/trash/trash-actions.ts b/src/store/trash/trash-actions.ts
index 884293a90e..62b669220e 100644
--- a/src/store/trash/trash-actions.ts
+++ b/src/store/trash/trash-actions.ts
@@ -9,104 +9,112 @@ import { snackbarActions, SnackbarKind } from "store/snackbar/snackbar-actions";
import { trashPanelActions } from "store/trash-panel/trash-panel-action";
import { activateSidePanelTreeItem, loadSidePanelTreeProjects } from "store/side-panel-tree/side-panel-tree-actions";
import { projectPanelActions } from "store/project-panel/project-panel-action-bind";
+import { sharedWithMePanelActions } from "store/shared-with-me-panel/shared-with-me-panel-actions";
import { ResourceKind } from "models/resource";
import { navigateTo, navigateToTrash } from "store/navigation/navigation-action";
-import { matchCollectionRoute } from "routes/routes";
+import { matchCollectionRoute, matchSharedWithMeRoute } from "routes/routes";
export const toggleProjectTrashed =
(uuid: string, ownerUuid: string, isTrashed: boolean, isMulti: boolean) =>
- async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise<any> => {
- let errorMessage = "";
- let successMessage = "";
- let untrashedResource;
- try {
- if (isTrashed) {
- errorMessage = "Could not restore project from trash";
- successMessage = "Restored project from trash";
- untrashedResource = await services.groupsService.untrash(uuid);
- dispatch<any>(isMulti || !untrashedResource ? navigateToTrash : navigateTo(uuid));
- dispatch<any>(activateSidePanelTreeItem(uuid));
- } else {
- errorMessage = "Could not move project to trash";
- successMessage = "Added project to trash";
- await services.groupsService.trash(uuid);
- dispatch<any>(loadSidePanelTreeProjects(ownerUuid));
- dispatch<any>(navigateTo(ownerUuid));
- }
- if (untrashedResource) {
- dispatch(
- snackbarActions.OPEN_SNACKBAR({
- message: successMessage,
- hideDuration: 2000,
- kind: SnackbarKind.SUCCESS,
- })
- );
- }
- } catch (e) {
- if (e.status === 422) {
- dispatch(
- snackbarActions.OPEN_SNACKBAR({
- message: "Could not restore project from trash: Duplicate name at destination",
- kind: SnackbarKind.ERROR,
- })
- );
- } else {
- dispatch(
- snackbarActions.OPEN_SNACKBAR({
- message: errorMessage,
- kind: SnackbarKind.ERROR,
- })
- );
+ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise<any> => {
+ let errorMessage = "";
+ let successMessage = "";
+ let untrashedResource;
+ try {
+ if (isTrashed) {
+ errorMessage = "Could not restore project from trash";
+ successMessage = "Restored project from trash";
+ untrashedResource = await services.groupsService.untrash(uuid);
+ dispatch<any>(isMulti || !untrashedResource ? navigateToTrash : navigateTo(uuid));
+ dispatch<any>(activateSidePanelTreeItem(uuid));
+ } else {
+ errorMessage = "Could not move project to trash";
+ successMessage = "Added project to trash";
+ await services.groupsService.trash(uuid);
+ dispatch<any>(loadSidePanelTreeProjects(ownerUuid));
+
+ const { location } = getState().router;
+ if (matchSharedWithMeRoute(location ? location.pathname : "")) {
+ dispatch(sharedWithMePanelActions.REQUEST_ITEMS());
+ }
+ else {
+ dispatch<any>(navigateTo(ownerUuid));
+ }
+ }
+ if (untrashedResource) {
+ dispatch(
+ snackbarActions.OPEN_SNACKBAR({
+ message: successMessage,
+ hideDuration: 2000,
+ kind: SnackbarKind.SUCCESS,
+ })
+ );
+ }
+ } catch (e) {
+ if (e.status === 422) {
+ dispatch(
+ snackbarActions.OPEN_SNACKBAR({
+ message: "Could not restore project from trash: Duplicate name at destination",
+ kind: SnackbarKind.ERROR,
+ })
+ );
+ } else {
+ dispatch(
+ snackbarActions.OPEN_SNACKBAR({
+ message: errorMessage,
+ kind: SnackbarKind.ERROR,
+ })
+ );
+ }
}
- }
- };
+ };
export const toggleCollectionTrashed =
(uuid: string, isTrashed: boolean) =>
- async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise<any> => {
- let errorMessage = "";
- let successMessage = "";
- try {
- if (isTrashed) {
- const { location } = getState().router;
- errorMessage = "Could not restore collection from trash";
- successMessage = "Restored from trash";
- await services.collectionService.untrash(uuid);
- if (matchCollectionRoute(location ? location.pathname : "")) {
- dispatch(navigateToTrash);
+ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise<any> => {
+ let errorMessage = "";
+ let successMessage = "";
+ try {
+ if (isTrashed) {
+ const { location } = getState().router;
+ errorMessage = "Could not restore collection from trash";
+ successMessage = "Restored from trash";
+ await services.collectionService.untrash(uuid);
+ if (matchCollectionRoute(location ? location.pathname : "")) {
+ dispatch(navigateToTrash);
+ }
+ dispatch(trashPanelActions.REQUEST_ITEMS());
+ } else {
+ errorMessage = "Could not move collection to trash";
+ successMessage = "Added to trash";
+ await services.collectionService.trash(uuid);
+ dispatch(projectPanelActions.REQUEST_ITEMS());
}
- dispatch(trashPanelActions.REQUEST_ITEMS());
- } else {
- errorMessage = "Could not move collection to trash";
- successMessage = "Added to trash";
- await services.collectionService.trash(uuid);
- dispatch(projectPanelActions.REQUEST_ITEMS());
- }
- dispatch(
- snackbarActions.OPEN_SNACKBAR({
- message: successMessage,
- hideDuration: 2000,
- kind: SnackbarKind.SUCCESS,
- })
- );
- } catch (e) {
- if (e.status === 422) {
dispatch(
snackbarActions.OPEN_SNACKBAR({
- message: "Could not restore collection from trash: Duplicate name at destination",
- kind: SnackbarKind.ERROR,
- })
- );
- } else {
- dispatch(
- snackbarActions.OPEN_SNACKBAR({
- message: errorMessage,
- kind: SnackbarKind.ERROR,
+ message: successMessage,
+ hideDuration: 2000,
+ kind: SnackbarKind.SUCCESS,
})
);
+ } catch (e) {
+ if (e.status === 422) {
+ dispatch(
+ snackbarActions.OPEN_SNACKBAR({
+ message: "Could not restore collection from trash: Duplicate name at destination",
+ kind: SnackbarKind.ERROR,
+ })
+ );
+ } else {
+ dispatch(
+ snackbarActions.OPEN_SNACKBAR({
+ message: errorMessage,
+ kind: SnackbarKind.ERROR,
+ })
+ );
+ }
}
- }
- };
+ };
export const toggleTrashed = (kind: ResourceKind, uuid: string, ownerUuid: string, isTrashed: boolean) => (dispatch: Dispatch) => {
if (kind === ResourceKind.PROJECT) {
diff --git a/src/views/collection-panel/collection-panel.tsx b/src/views/collection-panel/collection-panel.tsx
index eed9c7de71..d93d6e9258 100644
--- a/src/views/collection-panel/collection-panel.tsx
+++ b/src/views/collection-panel/collection-panel.tsx
@@ -37,7 +37,7 @@ import { Link as ButtonLink } from '@material-ui/core';
import { ResourceWithName, ResponsiblePerson } from 'views-components/data-explorer/renderers';
import { MPVContainer, MPVPanelContent, MPVPanelState } from 'components/multi-panel-view/multi-panel-view';
import { resourceIsFrozen } from 'common/frozen-resources';
-import { DefaultView } from "components/default-view/default-view";
+import { NotFoundView } from 'views/not-found-panel/not-found-panel';
type CssRules = 'root'
| 'button'
@@ -230,16 +230,10 @@ export const CollectionPanel = withStyles(styles)(connect(
</Card>
</MPVPanelContent>
</MPVContainer >
- : <Grid
- container
- alignItems="center"
- justify="center"
- style={{ minHeight: "100%" }}>
- <DefaultView
- icon={CollectionIcon}
- messages={["Collection not found"]}
- />
- </Grid>
+ : <NotFoundView
+ icon={CollectionIcon}
+ messages={["Collection not found"]}
+ />
;
}
diff --git a/src/views/not-found-panel/not-found-panel.tsx b/src/views/not-found-panel/not-found-panel.tsx
index 148c331e29..f54c00c32a 100644
--- a/src/views/not-found-panel/not-found-panel.tsx
+++ b/src/views/not-found-panel/not-found-panel.tsx
@@ -3,8 +3,12 @@
// SPDX-License-Identifier: AGPL-3.0
import { RootState } from 'store/store';
+import React from 'react';
import { connect } from 'react-redux';
import { NotFoundPanelRoot, NotFoundPanelRootDataProps } from 'views/not-found-panel/not-found-panel-root';
+import { Grid } from '@material-ui/core';
+import { DefaultView } from "components/default-view/default-view";
+import { IconType } from 'components/icon/icon';
const mapStateToProps = (state: RootState): NotFoundPanelRootDataProps => {
return {
@@ -17,3 +21,26 @@ const mapDispatchToProps = null;
export const NotFoundPanel = connect(mapStateToProps, mapDispatchToProps)
(NotFoundPanelRoot) as any;
+
+export interface NotFoundViewDataProps {
+ messages: string[];
+ icon?: IconType;
+}
+
+// TODO: optionally pass in the UUID and check if the
+// reason the item is not found is because
+// it or a parent project is actually in the trash.
+// If so, offer to untrash the item or the parent project.
+export const NotFoundView =
+ ({ messages, icon: Icon }: NotFoundViewDataProps) =>
+ <Grid
+ container
+ alignItems="center"
+ justify="center"
+ style={{ minHeight: "100%" }}
+ data-cy="not-found-view">
+ <DefaultView
+ icon={Icon}
+ messages={messages}
+ />
+ </Grid>;
diff --git a/src/views/process-panel/process-panel-root.tsx b/src/views/process-panel/process-panel-root.tsx
index d019d1418f..7a24089901 100644
--- a/src/views/process-panel/process-panel-root.tsx
+++ b/src/views/process-panel/process-panel-root.tsx
@@ -3,8 +3,7 @@
// SPDX-License-Identifier: AGPL-3.0
import React from "react";
-import { Grid, StyleRulesCallback, WithStyles, withStyles } from "@material-ui/core";
-import { DefaultView } from "components/default-view/default-view";
+import { StyleRulesCallback, WithStyles, withStyles } from "@material-ui/core";
import { ProcessIcon } from "components/icon/icon";
import { Process } from "store/processes/process";
import { SubprocessPanel } from "views/subprocess-panel/subprocess-panel";
@@ -24,6 +23,7 @@ import { AuthState } from "store/auth/auth-reducer";
import { ProcessCmdCard } from "./process-cmd-card";
import { ContainerRequestResource } from "models/container-request";
import { OutputDetails, NodeInstanceType } from "store/process-panel/process-panel";
+import { NotFoundView } from 'views/not-found-panel/not-found-panel';
type CssRules = "root";
@@ -209,16 +209,10 @@ export const ProcessPanelRoot = withStyles(styles)(
</MPVPanelContent>
</MPVContainer>
) : (
- <Grid
- container
- alignItems="center"
- justify="center"
- style={{ minHeight: "100%" }}>
- <DefaultView
- icon={ProcessIcon}
- messages={["Process not found"]}
- />
- </Grid>
+ <NotFoundView
+ icon={ProcessIcon}
+ messages={["Process not found"]}
+ />
);
}
);
diff --git a/src/views/project-panel/project-panel.tsx b/src/views/project-panel/project-panel.tsx
index 2f274c97d5..2cc751bffd 100644
--- a/src/views/project-panel/project-panel.tsx
+++ b/src/views/project-panel/project-panel.tsx
@@ -6,7 +6,7 @@ import React from 'react';
import withStyles from '@material-ui/core/styles/withStyles';
import { DispatchProp, connect } from 'react-redux';
import { RouteComponentProps } from 'react-router';
-import { StyleRulesCallback, WithStyles, Grid } from '@material-ui/core';
+import { StyleRulesCallback, WithStyles } from '@material-ui/core';
import { DataExplorer } from 'views-components/data-explorer/data-explorer';
import { DataColumns } from 'components/data-table/data-table';
@@ -51,7 +51,7 @@ import { GroupClass, GroupResource } from 'models/group';
import { CollectionResource } from 'models/collection';
import { resourceIsFrozen } from 'common/frozen-resources';
import { ProjectResource } from 'models/project';
-import { DefaultView } from "components/default-view/default-view";
+import { NotFoundView } from 'views/not-found-panel/not-found-panel';
type CssRules = 'root' | 'button';
@@ -276,16 +276,11 @@ export const ProjectPanel = withStyles(styles)(
defaultViewMessages={DEFAULT_VIEW_MESSAGES}
/>
</div>
- : <Grid
- container
- alignItems="center"
- justify="center"
- style={{ minHeight: "100%" }}>
- <DefaultView
- icon={ProjectIcon}
- messages={["Project not found"]}
- />
- </Grid>;
+ :
+ <NotFoundView
+ icon={ProjectIcon}
+ messages={["Project not found"]}
+ />
}
isCurrentItemChild = (resource: Resource) => {
diff --git a/src/views/workflow-panel/registered-workflow-panel.tsx b/src/views/workflow-panel/registered-workflow-panel.tsx
index da273719bf..50192e543d 100644
--- a/src/views/workflow-panel/registered-workflow-panel.tsx
+++ b/src/views/workflow-panel/registered-workflow-panel.tsx
@@ -12,8 +12,7 @@ import {
Card,
CardHeader,
CardContent,
- IconButton,
- Grid
+ IconButton
} from '@material-ui/core';
import { connect, DispatchProp } from "react-redux";
import { RouteComponentProps } from 'react-router';
@@ -27,7 +26,7 @@ import { getResource } from 'store/resources/resources';
import { openContextMenu, resourceUuidToContextMenuKind } from 'store/context-menu/context-menu-actions';
import { MPVContainer, MPVPanelContent, MPVPanelState } from 'components/multi-panel-view/multi-panel-view';
import { ProcessIOCard, ProcessIOCardType } from 'views/process-panel/process-io-card';
-import { DefaultView } from "components/default-view/default-view";
+import { NotFoundView } from 'views/not-found-panel/not-found-panel';
type CssRules = 'root'
| 'button'
@@ -202,16 +201,11 @@ export const RegisteredWorkflowPanel = withStyles(styles)(connect(
</Card>
</MPVPanelContent>
</MPVContainer>
- : <Grid
- container
- alignItems="center"
- justify="center"
- style={{ minHeight: "100%" }}>
- <DefaultView
- icon={WorkflowIcon}
- messages={["Workflow not found"]}
- />
- </Grid>;
+ :
+ <NotFoundView
+ icon={WorkflowIcon}
+ messages={["Workflow not found"]}
+ />
}
handleContextMenu = (event: React.MouseEvent<any>) => {
commit 26e2f985f4c2b511c59977e4c63158649f296624
Merge: e11c6c520d 5c43d68767
Author: Peter Amstutz <peter.amstutz at curii.com>
Date: Fri Oct 27 13:52:35 2023 -0400
Merge branch 'main' into 21067-process-panel-error
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>
commit e11c6c520d8d01397f58a5cda1fe7e5e5e06acab
Author: Peter Amstutz <peter.amstutz at curii.com>
Date: Thu Oct 26 17:15:51 2023 -0400
21067: Remove unused imports
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>
diff --git a/src/index.tsx b/src/index.tsx
index b0bda23ba8..ede257dc5d 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -64,7 +64,6 @@ import {
runningProcessResourceAdminActionSet,
readOnlyProcessResourceActionSet,
} from "views-components/context-menu/action-sets/process-resource-action-set";
-import { progressIndicatorActions } from "store/progress-indicator/progress-indicator-actions";
import { trashedCollectionActionSet } from "views-components/context-menu/action-sets/trashed-collection-action-set";
import { setBuildInfo } from "store/app-info/app-info-actions";
import { getBuildInfo } from "common/app-info";
@@ -89,8 +88,6 @@ import {
} from "views-components/context-menu/action-sets/project-admin-action-set";
import { permissionEditActionSet } from "views-components/context-menu/action-sets/permission-edit-action-set";
import { workflowActionSet, readOnlyWorkflowActionSet } from "views-components/context-menu/action-sets/workflow-action-set";
-import { snackbarActions, SnackbarKind } from "store/snackbar/snackbar-actions";
-import { openNotFoundDialog } from "./store/not-found-panel/not-found-panel-action";
import { storeRedirects } from "./common/redirect-to";
import { searchResultsActionSet } from "views-components/context-menu/action-sets/search-results-action-set";
diff --git a/src/store/process-panel/process-panel-actions.ts b/src/store/process-panel/process-panel-actions.ts
index 66de2f69f3..81f8dd6ba0 100644
--- a/src/store/process-panel/process-panel-actions.ts
+++ b/src/store/process-panel/process-panel-actions.ts
@@ -8,10 +8,9 @@ import { Dispatch } from "redux";
import { ProcessStatus } from "store/processes/process";
import { RootState } from "store/store";
import { ServiceRepository } from "services/services";
-import { navigateTo, navigateToWorkflows } from "store/navigation/navigation-action";
+import { navigateTo } from "store/navigation/navigation-action";
import { snackbarActions } from "store/snackbar/snackbar-actions";
import { SnackbarKind } from "../snackbar/snackbar-actions";
-import { showWorkflowDetails } from "store/workflow-panel/workflow-panel-actions";
import { loadSubprocessPanel, subprocessPanelActions } from "../subprocess-panel/subprocess-panel-actions";
import { initProcessLogsPanel, processLogsPanelActions } from "store/process-logs-panel/process-logs-panel-actions";
import { CollectionFile } from "models/collection-file";
diff --git a/src/store/project-panel/project-panel-middleware-service.ts b/src/store/project-panel/project-panel-middleware-service.ts
index b2ddb46c66..b72058d56e 100644
--- a/src/store/project-panel/project-panel-middleware-service.ts
+++ b/src/store/project-panel/project-panel-middleware-service.ts
@@ -35,7 +35,6 @@ import { updatePublicFavorites } from "store/public-favorites/public-favorites-a
import { selectedFieldsOfGroup } from "models/group";
import { defaultCollectionSelectedFields } from "models/collection";
import { containerRequestFieldsNoMounts } from "models/container-request";
-import { openNotFoundDialog } from "store/not-found-panel/not-found-panel-action";
export class ProjectPanelMiddlewareService extends DataExplorerMiddlewareService {
constructor(private services: ServiceRepository, id: string) {
commit 75b017ae9d566d523e448aaeb863c4d89b3548fe
Author: Peter Amstutz <peter.amstutz at curii.com>
Date: Thu Oct 26 16:56:28 2023 -0400
21067: Better handling of missing output/logs on process panel.
A few other important changes:
* Similar to the change in #21077, this removes the default error
snackbar popups any time a 400 error happens. This reduces user
confusion, particularly when "harmless" errors would occur.
* The collection files component will no longer give an "unhandled
rejection" React failure when it can't load the file list (this took
forever to track down.)
* Collections, projects and workflows will now default to a "not
found" panel if they fail to load. Previously, collections and
workflows would show nothing at all, and projects would show an empty
list.
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>
diff --git a/src/components/collection-panel-files/collection-panel-files.tsx b/src/components/collection-panel-files/collection-panel-files.tsx
index 83de48dec8..f1e50e0f0b 100644
--- a/src/components/collection-panel-files/collection-panel-files.tsx
+++ b/src/components/collection-panel-files/collection-panel-files.tsx
@@ -311,6 +311,8 @@ export const CollectionPanelFiles = withStyles(styles)(
return { ...next, ...prev };
}, {});
setPathData(state => ({ ...state, ...newState }));
+ }, () => {
+ // Nothing to do
})
.finally(() => {
setIsLoading(false);
diff --git a/src/index.tsx b/src/index.tsx
index a3f6c1ee79..b0bda23ba8 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -153,25 +153,13 @@ fetchConfig().then(({ config, apiHost }) => {
const services = createServices(config, {
progressFn: (id, working) => {
- //store.dispatch(progressIndicatorActions.TOGGLE_WORKING({ id, working }));
},
errorFn: (id, error, showSnackBar: boolean) => {
if (showSnackBar) {
console.error("Backend error:", error);
-
- if (error.status === 404) {
- store.dispatch(openNotFoundDialog());
- } else if (error.status === 401 && error.errors[0].indexOf("Not logged in") > -1) {
+ if (error.status === 401 && error.errors[0].indexOf("Not logged in") > -1) {
// Catch auth errors when navigating and redirect to login preserving url location
store.dispatch(logout(false, true));
- } else {
- store.dispatch(
- snackbarActions.OPEN_SNACKBAR({
- message: `${error.errors ? error.errors[0] : error.message}`,
- kind: SnackbarKind.ERROR,
- hideDuration: 8000,
- })
- );
}
}
},
diff --git a/src/services/collection-service/collection-service.ts b/src/services/collection-service/collection-service.ts
index de8f258708..e50e5ed350 100644
--- a/src/services/collection-service/collection-service.ts
+++ b/src/services/collection-service/collection-service.ts
@@ -53,11 +53,14 @@ export class CollectionService extends TrashableResourceService<CollectionResour
}
async files(uuid: string) {
- const request = await this.keepWebdavClient.propfind(`c=${uuid}`);
- if (request.responseXML != null) {
- return extractFilesData(request.responseXML);
+ try {
+ const request = await this.keepWebdavClient.propfind(`c=${uuid}`);
+ if (request.responseXML != null) {
+ return extractFilesData(request.responseXML);
+ }
+ } catch (e) {
+ return Promise.reject(e);
}
-
return Promise.reject();
}
diff --git a/src/store/process-logs-panel/process-logs-panel-actions.ts b/src/store/process-logs-panel/process-logs-panel-actions.ts
index 87a2fa12aa..4e52431eeb 100644
--- a/src/store/process-logs-panel/process-logs-panel-actions.ts
+++ b/src/store/process-logs-panel/process-logs-panel-actions.ts
@@ -13,7 +13,7 @@ import { Process, getProcess } from 'store/processes/process';
import { navigateTo } from 'store/navigation/navigation-action';
import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions';
import { CollectionFile, CollectionFileType } from "models/collection-file";
-import { ContainerRequestResource } from "models/container-request";
+import { ContainerRequestResource, ContainerRequestState } from "models/container-request";
const SNIPLINE = `================ ✀ ================ ✀ ========= Some log(s) were skipped ========= ✀ ================ ✀ ================`;
const LOG_TIMESTAMP_PATTERN = /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{9}Z/;
@@ -40,15 +40,16 @@ export const setProcessLogsPanelFilter = (filter: string) =>
export const initProcessLogsPanel = (processUuid: string) =>
async (dispatch: Dispatch, getState: () => RootState, { logService }: ServiceRepository) => {
+ let process: Process | undefined;
try {
dispatch(processLogsPanelActions.RESET_PROCESS_LOGS_PANEL());
- const process = getProcess(processUuid)(getState().resources);
+ process = getProcess(processUuid)(getState().resources);
if (process?.containerRequest?.uuid) {
// Get log file size info
const logFiles = await loadContainerLogFileList(process.containerRequest, logService);
// Populate lastbyte 0 for each file
- const filesWithProgress = logFiles.map((file) => ({file, lastByte: 0}));
+ const filesWithProgress = logFiles.map((file) => ({ file, lastByte: 0 }));
// Fetch array of LogFragments
const logLines = await loadContainerLogFileContents(filesWithProgress, logService, process);
@@ -57,13 +58,16 @@ export const initProcessLogsPanel = (processUuid: string) =>
const initialState = createInitialLogPanelState(logFiles, logLines);
dispatch(processLogsPanelActions.INIT_PROCESS_LOGS_PANEL(initialState));
}
- } catch(e) {
+ } catch (e) {
// On error, populate empty state to allow polling to start
const initialState = createInitialLogPanelState([], []);
dispatch(processLogsPanelActions.INIT_PROCESS_LOGS_PANEL(initialState));
// Only show toast on errors other than 404 since 404 is expected when logs do not exist yet
if (e.status !== 404) {
- dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Could not load process logs', hideDuration: 2000, kind: SnackbarKind.ERROR }));
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Error loading process logs', hideDuration: 4000, kind: SnackbarKind.ERROR }));
+ }
+ if (e.status === 404 && process?.containerRequest.state === ContainerRequestState.FINAL) {
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Log collection was trashed or deleted.', hideDuration: 4000, kind: SnackbarKind.WARNING }));
}
}
};
@@ -88,7 +92,7 @@ export const pollProcessLogs = (processUuid: string) =>
const isChanged = !isNew && currentStateLogLastByte < updatedFile.size;
if (isNew || isChanged) {
- return acc.concat({file: updatedFile, lastByte: currentStateLogLastByte});
+ return acc.concat({ file: updatedFile, lastByte: currentStateLogLastByte });
} else {
return acc;
}
@@ -132,17 +136,17 @@ const loadContainerLogFileList = async (containerRequest: ContainerRequestResour
* @returns LogFragment[] containing a single LogFragment corresponding to each input file
*/
const loadContainerLogFileContents = async (logFilesWithProgress: FileWithProgress[], logService: LogService, process: Process) => (
- (await Promise.allSettled(logFilesWithProgress.filter(({file}) => file.size > 0).map(({file, lastByte}) => {
+ (await Promise.allSettled(logFilesWithProgress.filter(({ file }) => file.size > 0).map(({ file, lastByte }) => {
const requestSize = file.size - lastByte;
if (requestSize > maxLogFetchSize) {
const chunkSize = Math.floor(maxLogFetchSize / 2);
- const firstChunkEnd = lastByte+chunkSize-1;
+ const firstChunkEnd = lastByte + chunkSize - 1;
return Promise.all([
logService.getLogFileContents(process.containerRequest, file, lastByte, firstChunkEnd),
- logService.getLogFileContents(process.containerRequest, file, file.size-chunkSize, file.size-1)
+ logService.getLogFileContents(process.containerRequest, file, file.size - chunkSize, file.size - 1)
] as Promise<(LogFragment)>[]);
} else {
- return Promise.all([logService.getLogFileContents(process.containerRequest, file, lastByte, file.size-1)]);
+ return Promise.all([logService.getLogFileContents(process.containerRequest, file, lastByte, file.size - 1)]);
}
})).then((res) => {
if (res.length && res.every(promiseResult => (promiseResult.status === 'rejected'))) {
@@ -150,7 +154,7 @@ const loadContainerLogFileContents = async (logFilesWithProgress: FileWithProgre
// error if every request failed
const error = res.find(
(promiseResult): promiseResult is PromiseRejectedResult => promiseResult.status === 'rejected'
- )?.reason;
+ )?.reason;
return Promise.reject(error);
}
return res.filter((promiseResult): promiseResult is PromiseFulfilledResult<LogFragment[]> => (
@@ -161,16 +165,16 @@ const loadContainerLogFileContents = async (logFilesWithProgress: FileWithProgre
// (prevent incorrect snipline generation or an un-resumable situation)
!!promiseResult.value.every(logFragment => logFragment.contents.length)
)).map(one => one.value)
- })).map((logResponseSet)=> {
+ })).map((logResponseSet) => {
// For any multi fragment response set, modify the last line of non-final chunks to include a line break and snip line
// Don't add snip line as a separate line so that sorting won't reorder it
for (let i = 1; i < logResponseSet.length; i++) {
- const fragment = logResponseSet[i-1];
- const lastLineIndex = fragment.contents.length-1;
+ const fragment = logResponseSet[i - 1];
+ const lastLineIndex = fragment.contents.length - 1;
const lastLineContents = fragment.contents[lastLineIndex];
const newLastLine = `${lastLineContents}\n${SNIPLINE}`;
- logResponseSet[i-1].contents[lastLineIndex] = newLastLine;
+ logResponseSet[i - 1].contents[lastLineIndex] = newLastLine;
}
// Merge LogFragment Array (representing multiple log line arrays) into single LogLine[] / LogFragment
@@ -181,7 +185,7 @@ const loadContainerLogFileContents = async (logFilesWithProgress: FileWithProgre
})
);
-const createInitialLogPanelState = (logFiles: CollectionFile[], logFragments: LogFragment[]): {filters: string[], logs: ProcessLogs} => {
+const createInitialLogPanelState = (logFiles: CollectionFile[], logFragments: LogFragment[]): { filters: string[], logs: ProcessLogs } => {
const logs = groupLogs(logFiles, logFragments);
const filters = Object.keys(logs);
return { filters, logs };
@@ -201,12 +205,12 @@ const groupLogs = (logFiles: CollectionFile[], logFragments: LogFragment[]): Pro
const groupedLogs = logFragments.reduce((grouped, fragment) => ({
...grouped,
- [fragment.logType as string]: {lastByte: fetchLastByteNumber(logFiles, fragment.logType), contents: fragment.contents}
+ [fragment.logType as string]: { lastByte: fetchLastByteNumber(logFiles, fragment.logType), contents: fragment.contents }
}), {});
return {
- [MAIN_FILTER_TYPE]: {lastByte: undefined, contents: mainLogs},
- [ALL_FILTER_TYPE]: {lastByte: undefined, contents: allLogs},
+ [MAIN_FILTER_TYPE]: { lastByte: undefined, contents: mainLogs },
+ [ALL_FILTER_TYPE]: { lastByte: undefined, contents: allLogs },
...groupedLogs,
}
};
@@ -233,9 +237,9 @@ const mergeMultilineLoglines = (logFragments: LogFragment[]) => (
// Partial line without timestamp detected
if (i > 0) {
// If not first line, copy line to previous line
- const previousLineContents = fragmentCopy.contents[i-1];
+ const previousLineContents = fragmentCopy.contents[i - 1];
const newPreviousLineContents = `${previousLineContents}\n${lineContents}`;
- fragmentCopy.contents[i-1] = newPreviousLineContents;
+ fragmentCopy.contents[i - 1] = newPreviousLineContents;
}
// Delete the current line and prevent iterating
fragmentCopy.contents.splice(i, 1);
@@ -283,7 +287,7 @@ export const navigateToLogCollection = (uuid: string) =>
await services.collectionService.get(uuid);
dispatch<any>(navigateTo(uuid));
} catch {
- dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Could not request collection', hideDuration: 2000, kind: SnackbarKind.ERROR }));
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Log collection was trashed or deleted.', hideDuration: 4000, kind: SnackbarKind.WARNING }));
}
};
diff --git a/src/store/process-panel/process-panel-actions.ts b/src/store/process-panel/process-panel-actions.ts
index 03e36aac98..66de2f69f3 100644
--- a/src/store/process-panel/process-panel-actions.ts
+++ b/src/store/process-panel/process-panel-actions.ts
@@ -59,7 +59,7 @@ export const navigateToOutput = (uuid: string) => async (dispatch: Dispatch<any>
await services.collectionService.get(uuid);
dispatch<any>(navigateTo(uuid));
} catch {
- dispatch(snackbarActions.OPEN_SNACKBAR({ message: "This collection does not exists!", hideDuration: 2000, kind: SnackbarKind.ERROR }));
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: "Output collection was trashed or deleted.", hideDuration: 4000, kind: SnackbarKind.WARNING }));
}
};
@@ -159,8 +159,7 @@ export const updateOutputParams = () => async (dispatch: Dispatch<any>, getState
};
export const openWorkflow = (uuid: string) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
- dispatch<any>(navigateToWorkflows);
- dispatch<any>(showWorkflowDetails(uuid));
+ dispatch<any>(navigateTo(uuid));
};
export const initProcessPanelFilters = processPanelActions.SET_PROCESS_PANEL_FILTERS([
diff --git a/src/store/project-panel/project-panel-middleware-service.ts b/src/store/project-panel/project-panel-middleware-service.ts
index c0c0cd1873..b2ddb46c66 100644
--- a/src/store/project-panel/project-panel-middleware-service.ts
+++ b/src/store/project-panel/project-panel-middleware-service.ts
@@ -35,6 +35,7 @@ import { updatePublicFavorites } from "store/public-favorites/public-favorites-a
import { selectedFieldsOfGroup } from "models/group";
import { defaultCollectionSelectedFields } from "models/collection";
import { containerRequestFieldsNoMounts } from "models/container-request";
+import { openNotFoundDialog } from "store/not-found-panel/not-found-panel-action";
export class ProjectPanelMiddlewareService extends DataExplorerMiddlewareService {
constructor(private services: ServiceRepository, id: string) {
@@ -69,7 +70,12 @@ export class ProjectPanelMiddlewareService extends DataExplorerMiddlewareService
rowsPerPage: dataExplorer.rowsPerPage,
})
);
- api.dispatch(couldNotFetchProjectContents());
+ if (e.status === 404) {
+ // It'll just show up as not found
+ }
+ else {
+ api.dispatch(couldNotFetchProjectContents());
+ }
} finally {
if (!background) { api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId())); }
}
diff --git a/src/store/workbench/workbench-actions.ts b/src/store/workbench/workbench-actions.ts
index b03400d5ae..f2dae2c524 100644
--- a/src/store/workbench/workbench-actions.ts
+++ b/src/store/workbench/workbench-actions.ts
@@ -109,6 +109,12 @@ export const isWorkbenchLoading = (state: RootState) => {
export const handleFirstTimeLoad = (action: any) => async (dispatch: Dispatch<any>, getState: () => RootState) => {
try {
await dispatch(action);
+ } catch (e) {
+ snackbarActions.OPEN_SNACKBAR({
+ message: "Error " + e,
+ hideDuration: 8000,
+ kind: SnackbarKind.WARNING,
+ })
} finally {
if (isWorkbenchLoading(getState())) {
dispatch(progressIndicatorActions.STOP_WORKING(WORKBENCH_LOADING_SCREEN));
diff --git a/src/views/collection-panel/collection-panel.tsx b/src/views/collection-panel/collection-panel.tsx
index 8cf19c03fe..eed9c7de71 100644
--- a/src/views/collection-panel/collection-panel.tsx
+++ b/src/views/collection-panel/collection-panel.tsx
@@ -37,6 +37,7 @@ import { Link as ButtonLink } from '@material-ui/core';
import { ResourceWithName, ResponsiblePerson } from 'views-components/data-explorer/renderers';
import { MPVContainer, MPVPanelContent, MPVPanelState } from 'components/multi-panel-view/multi-panel-view';
import { resourceIsFrozen } from 'common/frozen-resources';
+import { DefaultView } from "components/default-view/default-view";
type CssRules = 'root'
| 'button'
@@ -229,7 +230,17 @@ export const CollectionPanel = withStyles(styles)(connect(
</Card>
</MPVPanelContent>
</MPVContainer >
- : null;
+ : <Grid
+ container
+ alignItems="center"
+ justify="center"
+ style={{ minHeight: "100%" }}>
+ <DefaultView
+ icon={CollectionIcon}
+ messages={["Collection not found"]}
+ />
+ </Grid>
+ ;
}
handleContextMenu = (event: React.MouseEvent<any>) => {
diff --git a/src/views/project-panel/project-panel.tsx b/src/views/project-panel/project-panel.tsx
index 4c94ab8d2d..2f274c97d5 100644
--- a/src/views/project-panel/project-panel.tsx
+++ b/src/views/project-panel/project-panel.tsx
@@ -6,7 +6,7 @@ import React from 'react';
import withStyles from '@material-ui/core/styles/withStyles';
import { DispatchProp, connect } from 'react-redux';
import { RouteComponentProps } from 'react-router';
-import { StyleRulesCallback, WithStyles } from '@material-ui/core';
+import { StyleRulesCallback, WithStyles, Grid } from '@material-ui/core';
import { DataExplorer } from 'views-components/data-explorer/data-explorer';
import { DataColumns } from 'components/data-table/data-table';
@@ -51,6 +51,7 @@ import { GroupClass, GroupResource } from 'models/group';
import { CollectionResource } from 'models/collection';
import { resourceIsFrozen } from 'common/frozen-resources';
import { ProjectResource } from 'models/project';
+import { DefaultView } from "components/default-view/default-view";
type CssRules = 'root' | 'button';
@@ -238,6 +239,7 @@ const DEFAULT_VIEW_MESSAGES = ['Your project is empty.', 'Please create a projec
interface ProjectPanelDataProps {
currentItemId: string;
resources: ResourcesState;
+ project: GroupResource;
isAdmin: boolean;
userUuid: string;
dataExplorerItems: any;
@@ -245,17 +247,24 @@ interface ProjectPanelDataProps {
type ProjectPanelProps = ProjectPanelDataProps & DispatchProp & WithStyles<CssRules> & RouteComponentProps<{ id: string }>;
-export const ProjectPanel = withStyles(styles)(
- connect((state: RootState) => ({
- currentItemId: getProperty(PROJECT_PANEL_CURRENT_UUID)(state.properties),
+const mapStateToProps = (state: RootState) => {
+ const currentItemId = getProperty<string>(PROJECT_PANEL_CURRENT_UUID)(state.properties);
+ const project = getResource<GroupResource>(currentItemId || "")(state.resources);
+ return {
+ currentItemId,
+ project,
resources: state.resources,
userUuid: state.auth.user!.uuid,
- }))(
+ };
+}
+
+export const ProjectPanel = withStyles(styles)(
+ connect(mapStateToProps)(
class extends React.Component<ProjectPanelProps> {
render() {
const { classes } = this.props;
- return (
+ return this.props.project ?
<div data-cy='project-panel' className={classes.root}>
<DataExplorer
id={PROJECT_PANEL_ID}
@@ -267,7 +276,16 @@ export const ProjectPanel = withStyles(styles)(
defaultViewMessages={DEFAULT_VIEW_MESSAGES}
/>
</div>
- );
+ : <Grid
+ container
+ alignItems="center"
+ justify="center"
+ style={{ minHeight: "100%" }}>
+ <DefaultView
+ icon={ProjectIcon}
+ messages={["Project not found"]}
+ />
+ </Grid>;
}
isCurrentItemChild = (resource: Resource) => {
diff --git a/src/views/workflow-panel/registered-workflow-panel.tsx b/src/views/workflow-panel/registered-workflow-panel.tsx
index 5973efedc8..da273719bf 100644
--- a/src/views/workflow-panel/registered-workflow-panel.tsx
+++ b/src/views/workflow-panel/registered-workflow-panel.tsx
@@ -13,6 +13,7 @@ import {
CardHeader,
CardContent,
IconButton,
+ Grid
} from '@material-ui/core';
import { connect, DispatchProp } from "react-redux";
import { RouteComponentProps } from 'react-router';
@@ -26,6 +27,7 @@ import { getResource } from 'store/resources/resources';
import { openContextMenu, resourceUuidToContextMenuKind } from 'store/context-menu/context-menu-actions';
import { MPVContainer, MPVPanelContent, MPVPanelState } from 'components/multi-panel-view/multi-panel-view';
import { ProcessIOCard, ProcessIOCardType } from 'views/process-panel/process-io-card';
+import { DefaultView } from "components/default-view/default-view";
type CssRules = 'root'
| 'button'
@@ -200,7 +202,16 @@ export const RegisteredWorkflowPanel = withStyles(styles)(connect(
</Card>
</MPVPanelContent>
</MPVContainer>
- : null;
+ : <Grid
+ container
+ alignItems="center"
+ justify="center"
+ style={{ minHeight: "100%" }}>
+ <DefaultView
+ icon={WorkflowIcon}
+ messages={["Workflow not found"]}
+ />
+ </Grid>;
}
handleContextMenu = (event: React.MouseEvent<any>) => {
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list